home *** CD-ROM | disk | FTP | other *** search
/ Hottest 6 / Hottest 6 (1996)(PDSoft)[!].iso / software / fredfish / 1076.lha / Programs / ZShell / ZShell.doc < prev    next >
Text File  |  1995-04-10  |  104KB  |  2,347 lines

  1. ZShell-Documentation 2.5 (05.04.95)
  2. ----------------------------------------------------------------------------
  3.             #============================================#
  4.             #    ZSHELL V1.30 (C) 1990,91 PAUL HAYTER    #
  5.             # updated to V2.5 (C) 1993-95 MARTIN GIERICH #
  6.             #============================================#
  7.  
  8. If you have used another version of ZShell, please read Changes.
  9.  
  10. ============================================================================
  11. Contents
  12.  
  13. For those who never read the whole Documentation
  14. Introduction, Features and Concepts
  15. Starting ZShell
  16.  
  17. History and Command Line Editing
  18. Executing Commands
  19.  
  20. Wild Cards
  21. Filenamecompletion
  22. Options
  23. Redirecting Input/Output
  24.  
  25. Command Overview
  26. Builtin Commands for Disk Management
  27. Builtin Commands for Scripts and Controlling
  28. Builtin Commands for Advanced Users
  29.  
  30. Changes
  31. Tips and Hints
  32. Possibilities for Future Improvements
  33. Distribution
  34. Copyright
  35. Disclaimer
  36.  
  37. Credits
  38. Authors
  39. ============================================================================
  40. For those who never read the whole Documentation
  41.  
  42. Start the file called ZShell from Workbench or CLI (SHELL), or even
  43. better: Put the file ZShell in the C: directory and start the file ZSH.
  44. Now press the HELP key. Among lots of other information you see "TYPE HELP
  45. ? ...". Make sure that ZShell.doc is in the current directory or in S:
  46. and try that. You will see how to use the ONLINE HELP. Try to type
  47. "HELP HISTORY" to see how command line editing works. Execute the
  48. example startup file "ZStart" or put it into the S: drawer and
  49. have a look at it.
  50. Please send me your comment; my Internet-Adress is:
  51. uj3w@rz.uni-karlsruhe.de (Martin Gierich).
  52.  
  53. Things somewhere hidden in the documentation:
  54. * To avoid using an internal command or an alias, you can put a point
  55.   before it, eg. ".list libs:".
  56. * To complete a filename, type in a bit then press TAB.
  57. * If you use "ctrl -c *.info", DIR and Filenamecompletion ignore Icons.
  58. * To start buffering output, use "review 20000"; press Shift+TAB to see it.
  59.   With it you can use ">m" to redirect to MORE, a bit like piping to MORE.
  60. * If you have OS3.0+, try "ctrl -r 01111111".
  61. * Instead of "RUN <NIL: >NIL: command" use "RUN -C command".
  62. * You get a standard prompt with: prompt "%n.%p> "
  63. Aliases work different to them in normal Shell.
  64. * See FLAGS on how to configure some things you need.
  65.   With that you can switch on Iconifying and use AmigaDOS wildcards.
  66. * Try "flags debug on" to debug your script-files.
  67. * Try to drag Workbench-Icons into the ZShell window
  68. * See Features and Tips and Hints for more.
  69. ============================================================================
  70. Introduction
  71.  
  72. ZShell is a small, fast and powerful Shell.
  73. Have a look at Features to see the advantages.
  74. ZShell is tested with Kickstart 1.3 , 2.04 and 3.0 and should
  75. run also with other Kickstarts. There are no special requirements,
  76. but some things can only be used with Kickstart 2.0 or better.
  77. I tried to made usage similar to AmigaDOS. If you did not
  78. understand something, have a look at your AmigaDOS usermanual.
  79.  
  80.    Concepts                        Features
  81.  
  82. Used Abbreviations:
  83. OS2.0+ means Kickstart and Workbench versions are 2.0 or better
  84. OS1.3- means Kickstart and Workbench versions are 1.3 or older
  85. ============================================================================
  86. Concepts
  87.  
  88. I have heard that there is a Shell called "zsh" on UNICS-systems. ZShell
  89. has nothing to do with it, because it tries to be AmigaDOS compatible,
  90. not just another UNICS shell clone. The compatibility is, of course, not
  91. 100%, if you need that use the original AmigaDOS Shell. So ZShell has some
  92. differences, that give the special feeling of it.
  93.  
  94. The first main advantage of ZShell is its power/size ratio. In just 32K
  95. there are all often needed commands (like list,copy etc.) and some not
  96. so often needed, which do not increase size much.
  97.  
  98. The second main advantage is the Filenamecompletion (short: FNC) and the
  99. review buffer. FNC is like those shells on UNICS and can therefore be
  100. controlled fully with the keyboard. No annoying filerequesters pop up,
  101. that make it neccessary to change from keyboard to mouse.
  102. Nevertheless you can use ZShell with (memory hungry and slow) console
  103. handlers like KingCON.
  104.  
  105. Third thing is script file execution. ZShell itself supports only the
  106. basic stuff to execute scripts, because if you need a more complex
  107. construction you can use ARexx or another programming language.
  108. ZShell was never intended to be a substitute for a programming language !
  109. You can use scripts made for AmigaDOS shell without problems, because
  110. the command EXECUTE uses AmigaDOS to execute it.
  111.  
  112. Fourth, I tried to make using ZShell as easy to use as possible. Not like
  113. UNICS shells which have thousands of options you will never keep in mind.
  114.  
  115. See Future for the future concepts.
  116. ============================================================================
  117. Features
  118.  
  119. Freeware, no payment required.
  120. * Usage is similar (or better) to the standard AmigaDOS shell.
  121. * About 30K small (pure assembler code, source included).
  122. * Supports the standard housekeeping commands which are builtin,
  123.   so no disk access is necessary.
  124.   eg. list, dir, cd, rename, makedir, delete, copy, path, info, type
  125. * A total of 65 builtin commands.
  126. Starting from Workbench or CLI/Shell. No Installation required.
  127. File name completion by simply pressing TAB.
  128. Review buffer to see again what scrolled out of the window.
  129. * Some commands and features for programmers.
  130. Online Help function and AmigaGuide-Documentation with examples.
  131. Command line editing better than OS2.0/3.0 Shell.
  132. * Support of OS2.0+ and OS3.0+ specific features
  133. Wild cards and recursive processing.
  134. * Real RUN and NEWCLI command that reenters ZShell quickly.
  135. DIR and LIST both sort (by default) and show filesize.
  136. * Application-Window/-Icon
  137. * Can open window on own screen.
  138. * 100% script compatibility.
  139. * Can create and show Hard- and Softlinks.
  140. * Command and Function key aliasing.
  141. * Can iconify itself.
  142. * Colorful output (or fast scrolling with OS3.0+, see CTRL -R)
  143. * Simple MORE type text viewer.
  144. * Makes itself resident for quicker starting and memory saving.
  145. ============================================================================
  146.  
  147. ============================================================================
  148. Starting ZShell
  149.  
  150. There are three ways of starting ZShell:
  151.  1. The easiest way:
  152.     Start the file called "ZShell" from Workbench or CLI/Shell.
  153.  2. Put the file called "ZShell" in the C: directory and
  154.     start the file called "ZSH" from Workbench or CLI/Shell.
  155.  3. A bit complicated and only for starting from Workbench:
  156.     Make a startup script (see below) or an empty file with a PROJECT
  157.     icon. Change the default tool to "ZSH" or "ZShell" (better ZSH,
  158.     but then put ZShell in C: ) with the right path. Doubleclicking on
  159.     this project icon will start ZShell and execute this script.
  160.     You can also shift-doubleclick a startup script with ZSH/ZShell.
  161.  
  162. The first way is recommended for having a quick glance at ZShell,
  163. but if you use ZShell sometimes, the second way is better, because "ZSH"
  164. is about 800 Bytes long and starts the ZShell-resident if possible.
  165. So loading "ZShell" is only necessary the first time you use ZShell
  166. after booting up.
  167.  
  168. Starting from CLI/Shell
  169.  
  170. Starting from Workbench
  171.  
  172. Opening window on own screen
  173.  
  174. Starting using console handlers like KingCON
  175.  
  176. Starting from Hotkey-/Directory-Utilities
  177.  
  178. How to use CON:
  179.  
  180. Errormessages during starting
  181.  
  182. Several notes
  183. ============================================================================
  184. Starting from CLI
  185.  
  186. If starting from CLI/Shell you can specify the name of a script file
  187. (see EXECUTE) as an argument which will be executed after starting.
  188. Precede the name with "-s". If there is no name given, ZShell will try
  189. to execute S:ZStart . After "-w" you can specify a window-description.
  190. See NEWCLI for more details, it is exactly the same.
  191. eg.     ZSH -sram:hello     {will try to execute ram:hello}
  192.         ZShell              {will try to execute S:ZStart}
  193.         ZSH -sram:hello "-wCON:10/10/90/90/Hi there" {opens this window}
  194.  
  195. All CLI-Options:
  196.  -Sname (Script): Start script named "name"
  197.  -Wdesc (Window): Open window with window-description "desc"
  198.  -Ccmd (Command): Start command named "cmd"
  199.  -D     (Detach): Creates its own process (must be last option)
  200.  -N      (Noraw): Switches off the internal command-line-editing
  201.  -Edepth/diplayID/overscan/title (scrEEn): Opens Public Screen, OS2.0+
  202.  -r (not Resident): Testing-stuff (must be first option and lowercase)
  203. ============================================================================
  204. Starting from Workbench
  205.  
  206. If starting from Workbench you can specify the window-description
  207. and the startup script (default S:ZStart , see above) with ToolTypes:
  208. eg.     WINDOW=con:20/50/400/100/Moin
  209.         SCRIPT=ram:hello
  210.         WINDOW=             {this would not open a window}
  211. Make sure that WINDOW and SCRIPT are in capital letters.
  212. (You can edit the ToolTypes by selecting an icon and then choosing
  213. "Information" from the Workbench-Menu.)
  214.  
  215. All ToolTypes:
  216.  SCRIPT=name : Start script named "name"
  217.  WINDOW=desc : Open window with window-description "desc"
  218.  COMMAND=cmd : Start command named "cmd"
  219.  NORAW=      : Switches off the internal command-line-editing
  220.  ICONNAME=name : Specify name of the icon for iconifying (OS2.0+)
  221.  XPOS=number : Give the position of the icon (OS2.0+)
  222.  YPOS=number : Give the position of the icon (OS2.0+)
  223.  ICONIFY=    : Start in iconifyed mode (OS2.0+)
  224.  SCREEN=depth/displayID/overscan/title : Opens a Public Screen (OS2.0+)
  225.  
  226. These two are handled by Workbench 2.0+:
  227.  DONOTWAIT   : Use this if you put ZShell in the WBStartup-drawer
  228.                (preferably together with the ICONIFY ToolType)
  229.  TOOLPRI=pri : Sets the priority of the process
  230. ============================================================================
  231. Opening window on own screen
  232.  
  233. OS2.0+
  234. You can open a Public Screen using the CLI-Option "-e" or the
  235. Tooltype "SCREEN". Optionally you can pass some arguments:
  236. depth: (default 2) Number of Bitplanes being used
  237. displayID: (default $8000) DisplayID looked up in sys:WBStartup/Mode_Names
  238. overscan: (default 1) Overscan type. 1=text, 2=standard, 3=maximum
  239. title: (default ZShell) Case sensitive name of Public Screen
  240.  
  241. To get your window open there, you have to add ".../SCREEN ZShell" to your
  242. window-description.
  243.  
  244. Examples for CLI-Start:
  245. ZShell "-wCON:////Shell/CLOSE/SCREEN ZShell" -e
  246. ZShell "-wCON:1/10/640/390/Shell/CLOSE/SCREEN ZShell" -e1/$8004
  247. ZShell "-wCON:////Shell/CLOSE/SCREEN Super" -e3/$8000/2/Super
  248.  
  249. Example for Workbench-Start:
  250. SCREEN=3/$8000/1/ZShell-Screen
  251. WINDOW=CON:1/10/640/190/CLOSE/SCREEN ZShell-Screen
  252. ============================================================================
  253. Starting from Hotkey-Utilities or Directory-Utilities
  254.  
  255. In most cases you have to use a template like starting from CLI
  256. when configuring the utility.
  257.  
  258. If the utility does not open a window, you have to use the "-w" option.
  259. If the utility seems to hang up after starting ZShell, try the "-d" option.
  260. Example:  zshell -wCON:1/10/640/100/ZShell -d
  261.  
  262. Some special programs:
  263. YAK: Use "zshell -d" as argument of a hotkey-definition.
  264. MachV: EXECMD"zshell -wcon: -d"
  265. MTool: Define a program with "zshell" as program and "-d" as parameters.
  266. ============================================================================
  267. Starting ZShell using KingCON
  268.  
  269. KingCON is a Console-Handler with some GUI-Features.
  270. If you do not use KingCON, you can skip this chapter.
  271.  
  272. Starting from CLI/Shell:
  273.   Use the option -n, and you can optionally use option -w.
  274.   Examples:  ZShell -n
  275.              ZShell -wKCON: -n
  276.  
  277. Starting from Workbench:
  278.   Use the ToolTypes NORAW and WINDOW=KCON:
  279.  
  280. The CLI-Option "-n" and the ToolType "NORAW" switch off the internal
  281. command-line-editor, so you could make use of the command-line-
  282. editing facilities of KingCON.
  283. ============================================================================
  284. How to use CON:
  285.  
  286. CON: stands for Console-Handler. This is a program which handles
  287. keypresses and textual outputs on its window similar to a file.
  288.  
  289. You have to pass several things when opening a CON: window:
  290. CON:leftpos/upperpos/width/height/title
  291. leftpos,upperpos are the position of the left top edge in pixels.
  292.   Both need to be 1 or more.
  293. width,height are the window's dimensions in pixels.
  294. title is a string
  295.  
  296. With OS2.0+ you can pass some more things and you can drop some things.
  297. So "CON:" alone is valid and opens with the default settings.
  298. To get a close gadget you have to append "/CLOSE", eg.
  299.     CON:1/1/600/100/Great/CLOSE
  300. "/SCREEN screenname" opens on a public screen
  301. "/WAIT" stays till you click the close gadget or press CTRL-\
  302. "/ALT" gives an alternative size with the zoom gadget
  303. ... there are some more but I do not know much of them
  304. ============================================================================
  305. Errors during starting
  306.  
  307. If there is an error during starting, a recoverable alert will appear
  308. and show a number. Here is a list what these numbers mean:
  309.  
  310. Workbench-Start:
  311. 1: No mem for CLI-Struct
  312. 2: CLI-Table 20 limit
  313. 3: No current Dir
  314. 4: No icon.library
  315. 5: No icon
  316. OpenWindow:
  317. 10: Already opened
  318. 11: Cannot open output
  319. 12: Not interactive
  320. 13: Cannot open input
  321. Newcli:
  322. 15: Cannot copy CurrentDir
  323. Input:
  324. 20: Input failed
  325. ============================================================================
  326. Several notes
  327.  
  328. * You can start ZShell from within the Startup-Sequence. After ending
  329.   ZShell the Startup-Sequence will continue. If you use "ZShell -d" in
  330.   the Startup-Sequence, it will continue and a ZShell will pop up.
  331. * If you would like a scrollbar, try CB (ConBuffer) from
  332.   Aminet/util/shell/conbuffer11.lha . A bit old, but it works.
  333. * You can rename "ZSH" as what you like, but do not rename "ZShell"
  334. * If you start ZShell from the Workbench-Menu "Execute Command",
  335.   you can close the window after ending ZShell with CTRL-\  or
  336.   doubleclick the close-gadget.
  337. * ZShell and ZSH are PURE (see RESIDENT,PROTECT).
  338. ============================================================================
  339.  
  340. ============================================================================
  341. History and Command Line Editing
  342.  
  343. ZShell has a 1024 byte circular history buffer. It works similar
  344. to most other shells, the NEWCON: handler in Workbench V1.3 and
  345. the standard console handler in OS2.0+.
  346.  
  347. You can change the edit keys with CTRL. These are the default keys:
  348.   UP ARROW        - go back one line in the history buffer
  349.   DOWN ARROW      - go forward one line in the history buffer
  350.   SHIFT UP ARROW  - go to the 1st line in the history buffer if nothing
  351.                     was typed. Otherwise the string left of the cursor
  352.                     will be searched in history buffer (like in OS2.0+)
  353.   SHIFT DOWN ARROW- go to the last line in the history buffer, which
  354.                     holds the last modified line
  355.  
  356.   LEFT ARROW      - move cursor left
  357.   RIGHT ARROW     - move cursor right
  358.   SHIFT LEFT ARROW- move cursor to left end
  359.   SHIFT RIGHT ARROW move cursor to right end
  360.   CTRL R          - move cursor to start of previous word
  361.   CTRL T          - move cursor to start of next word
  362.  
  363.   CTRL S          - delete to start of line
  364.   CTRL E          - delete to end of line
  365.   CTRL W          - delete one word right of cursor
  366.   CTRL Q          - delete one word left of cursor
  367.   CTRL X          - delete whole line
  368.  
  369.   TAB             - see FILENAMECOMPLETION (that is great !)
  370.   SHIFT TAB       - read review-buffer with MORE
  371.   CTRL V          - read history-buffer with MORE
  372.   CTRL F          - pop up a filerequester (needs asl.library)
  373.   CTRL L          - clear the ZShell window
  374.  
  375.   RETURN          - put commandline in history-buffer and execute it
  376.   SHIFT RETURN    - put commandline in history-buffer without executing
  377.   ESC (Escape)    - quit ZShell like ENDCLI (I like this very much !)
  378.  
  379. Words are delimited by space, point, slash and colon ( ./:).
  380. Again, command line editing is similar to most shells. Backspace,
  381. delete and return do what they are supposed to do.
  382.  
  383. If you have defined (using ALIAS) some Function keys,
  384. you can use them, too.
  385.  
  386. OS2.0+:
  387. You can drop Workbench-Icons into the ZShell's window. Then the name of
  388. the icon will be inserted into the commandline.
  389. When in iconifyed mode, you can drop an icon on that
  390. Application-Icon with the same effect.
  391. ============================================================================
  392. Executing Commands
  393.  
  394. Most commands can be aborted by depressing Control-C.
  395. Nearly everything is case independent.
  396. To use a disk command simply type its name after the prompt, the
  397. same way as you would do in other shells. The first part of the input
  398. up to the first space is interpreted as commandname. It is searched
  399. for (in this order) :
  400.  1. in the alias list
  401.  2. in the internal (builtin) command list (see COMMAND OVERVIEW)
  402.  3. in the resident command list
  403.  4. in the current directory (see CD)
  404.  5. in the command search path
  405. and, if it is found, it is executed. The part after the first space
  406. is taken as arguments, also called parameters. The arguments are
  407. separated by spaces. ZShell will allow up to 25 arguments.
  408.  
  409. If the commandname was found on disk, it will be analyzed:
  410.  1. If the commandname is a directory, the current directory will be
  411.     changed (see CD) to it.
  412.  2. If the script flag is set, it will be executed eighter
  413.     as ZShell script or as ARexx script.
  414.  3. If the execute flag is set (and it is set in most cases), it will
  415.     be treated as normal executable command. 
  416.  4. If the execute flag is set, but the command is not executable, it
  417.     will be shown using amigaguide.library.
  418.  
  419. eg.     addbuffers df0: 15
  420. "addbuffers" is the command, that will be found as a internal command.
  421. "df0:" is the first argument. "15" is the second argument. The third
  422. argument does not exist.
  423.  
  424. You can avoid using an alias or an internal (builtin) command or
  425. changing the current directory by typing a point before the
  426. commandname (this is called "force disk").
  427.  
  428. To abbreviate internal or resident commands put a point behind it.
  429. If you use just a point, the current directory will be set to the
  430. last current directory ("dir back").
  431. To get to the parent directory, you have to use a slash ( / ).
  432.  
  433. eg.     .addbuffers df0: 20
  434. {This uses the disk command or if available the resident addbuffers}
  435.         ad. df0: 20   {uses the internal addbuffers command}
  436.         .add. df0: 20 {if available this uses the resident addbuffers}
  437.         .             {go back to old current dir}
  438.  
  439. BEWARE of other matching commands! The first matching will be taken!
  440. di. can mean DIE or DIR, but DIE will be taken !
  441. There is no abbreviation for disk commands, use FileNameCompletion
  442. ( TAB-Key ) instead.
  443.  
  444. A textual error message will be displayed if an AmigaDOS error occurs.
  445. ============================================================================
  446. amigaguide.library
  447.  
  448. For those who do not know:
  449.  amigaguide.library is Commodore's great hypertext system that can
  450.  easily be used to view documentations or to implement online-help into
  451.  own applications.
  452.  It needs Kickstart 1.3 or better.
  453.  You can get it from Fish Disk 920 or from Aminet as text/hyper/aguide34.lha
  454.  
  455. amigaguide.library V34+ can show AmigaGuide documents and ASCII documents.
  456. V39+ that comes with OS3.0+, can show all kinds of files that are supported
  457. by your datatypes including AmigaGuide and ASCII texts.
  458. So, with OS3.0+, you can enter the name of a picture in ZShell just like
  459. a command to view it.
  460. ============================================================================
  461. Wild Cards
  462.  
  463. ZShell supports wild card file descriptions on some commands
  464. (DIR,LIST,DELETE,COPY,CTRL,JOIN,MOVE,PROTECT)
  465. Wild cards are like those supported on MessyDOS or UNICS systems, and not
  466. the same as the ones on AmigaDOS. So use * instead of #? .
  467. NOTE: You can only effectively put one * character in a wild card.
  468.  
  469. If you would like to use AmigaDOS wildcard-patternmatching use
  470. FLAGS WILD ON (this uses MatchPatternNoCase(), so OS2.0+ only).
  471.  
  472. Character       Meaning
  473.   *         Match zero or more characters.
  474.   ?         Match one character.
  475.   ~         Negates the following wildcard.
  476.  [  ]       Specifies a class of characters to match.
  477.             (One of the characters in the brackets must match)
  478.   |         Separate multiple filenames (can be wildcards)
  479.             (One of the file descriptions separated by | must match)
  480.  
  481. To get that just try the examples following and try it out with DIR.
  482. eg.    list *.info      {lists all files ending in .info}
  483.        dir z*.s         {lists all files starting z, ending in .s}
  484.        delete df0:*.info   {deletes all .info files from df0:}
  485.        copy *.s ram:    {copies all .s files to ram:}
  486.        copy 1? df0:     {copies all two char files beginning with 1}
  487.        dir ~*.s         {lists all files NOT ending in .s}
  488.        list ~*.info     {lists all files except for .info files}
  489.        dir *.[co]       {lists files ending in .c or .o}
  490.        list [abcd]*     {lists files beginning with a,b,c or d}
  491.        list c:mount|version {lists the files Mount and Version}
  492.        list ram:env/a*|*b   {lists all files starting with a or
  493.                              ending with b from RAM:env (environment)}
  494.        copy ~*.info|*.bak   {copies all files NOT ending in .info
  495.                              and NOT ending in .bak}
  496. ============================================================================
  497. Filenamecompletion
  498.  
  499. Filenamecompletion makes typing long filenames and directorynames
  500. easier. It does not matter if you want to type it as command or as
  501. argument. Just type some beginning characters of the desired name and
  502. then press TAB . If there is more than one possibility that
  503. match, it will only be completed as far as all possibilities match.
  504. In this case type the next character then again press TAB . If a
  505. filename was fully matched, a space after it will be inserted. If
  506. a directoryname was fully matched, a slash (/) will be inserted after.
  507. If no partial match is found, the screen blinks (display beep).
  508.  
  509. Maybe you do not want *.info files to be completed. This will avoid
  510. some trouble. Use "ctrl -c *.info" for that or see CTRL -C.
  511.  
  512. If you do not want to see all files that match,you can use
  513. FLAGS MATCH OFF.
  514.  
  515. For example a directory contains:
  516.   MegaEditExample
  517.   MegaEditExample.info
  518.   MegaViewer
  519.   MoreMegaFiles               {directory}
  520.  
  521. If you want to change the current directory to MoreMegaFiles you type:
  522.     mo
  523. then press the TAB key. You will see the full name with a slash at the
  524. end. Just press RETURN and you changed it.
  525. To delete MegaViewer you type:
  526.     delete me
  527. and press TAB . You will see "Mega". Now type the V key and
  528. press TAB again. You see "delete MegaViewer ". Press RETURN and
  529. it will be gone.
  530. You want to start MegaEditExample. Type:
  531.     me
  532. and press TAB. Then type E and press TAB. There is no space after the
  533. name. This is because MegaEditExample.info also matches.
  534. Start it by pressing RETURN.
  535. ============================================================================
  536. Options
  537.  
  538. As nearly everything, options are also case independent.
  539. The internal commands support only four options, because this is easier
  540. to remember. These options start with a dash (-) .
  541.  
  542.   1. -C or -CLEAR , used by AVAIL,ENDCLI,LOCATE,PATH,
  543.               RESIDENT,RUN,CTRL
  544.   2. -R or -RECURSIVE , used by COPY,DELETE,DIR,LIST,JOIN,
  545.               MOVE,PROTECT
  546.   3. -Q or -QUICK , used by DIR,JOIN,LIST,DELETE
  547.   4. -S or -SORT , used by COPY,MOVE,PROTECT
  548. So instead of typing "dir -q" you can also type "dir -quick".
  549.  
  550. Instead of -R you could also use ALL , if FLAGS ALL ON is set.
  551.  
  552. For some special cases there are longer options used: "delete bla force"
  553. FORCE is here an option. You can abbreviate this by a point (see CTRL),
  554. so "delete bla f." is the same.
  555. ============================================================================
  556. Redirecting Input/Output
  557.  
  558. The standard redirection operators are supported for all internal
  559. commands, as well as disk based programs. (Redirection only affects
  560. those programs which use the dos.library's Input() and Output()
  561. functions.)
  562.  
  563.     >  redirect std output.
  564.     <  redirect std input.
  565.     >> append redirect output. (tacks output onto the end of file)
  566.     <> redirect input and output.
  567.     >M view output with MORE after the command has ended,
  568.        you need a review-buffer for that which is big enough,
  569.        otherwise some of the output will be swallowed.
  570.  
  571. eg.    dir >ram:directory df0:c
  572.        type zshell.doc <raw:0/0/100/100/input >raw:0/0/640/100/output
  573.        sortfile things >>df0:things.log
  574.        list >m df0:             {view output with more}
  575.        copy > df0: ram:         {redirects to NIL: !}
  576. ============================================================================
  577.  
  578. ============================================================================
  579. Builtin Commands for Disk Management
  580.  
  581. Following there are descriptions of the standard DOS commands which are
  582. builtin in ZShell (and therefore need not be loaded from disk).
  583. Square brackets [] mean that the argument enclosed in is optional.
  584. A vertical bar | separates multiple possibilities, choose only one.
  585.  
  586. AddBuffers drive [number_of_buffers]
  587. Assign [logical name:] [directory] [ADD|DEFER|PATH|REMOVE]
  588. Cd [destination]
  589. Copy [-R] [-S] source1 [source2] ... [destination]
  590. Delete [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  591. Delete Device devicename [name [filesystem]]
  592. Dir [-R] [-Q] [source1] [source2] ...
  593. FileNote file|directory comment
  594. HType source
  595. Info
  596. Join [-R] [-S] source1 [source2] ... destination
  597. List [-R] [-Q] [source]
  598. Lock device ON|OFF
  599. MakeDir directory1 [directory2] ...
  600. MakeIcon filename [icontype]
  601. MakeLink linkname filename HARD|SOFT
  602. More source [line count]
  603. Move [-R] [-S] source1 [source2] ... [destination]
  604. Protect [-R] [-S] [file/dir1] [file/dir2] ... [+|-|h|s|p|a|r|w|e|d]
  605. Relabel drive newname
  606. Rename source destination
  607. Resident [command1] [command2] ...
  608. Search file search_string
  609. SetDate file|directory [date/time]
  610. Type source
  611. ============================================================================
  612. ADDBUFFERS drive number_of_buffers
  613.  
  614. * ADDBUFFERS increases disk access speed on the specified drive by
  615.   adding a number of sector cache buffers. Each additional buffer
  616.   reduces memory by about 560 bytes. Generally, 25-30 buffers per
  617.   floppy drive is optimal.
  618.  
  619. eg.     addbuffers df0: 25
  620.         addbuffers df1: 30
  621. ============================================================================
  622. ASSIGN [logical name:] [directory] [ADD|REMOVE|DEFER|PATH]
  623.  
  624. * ASSIGN will assign a logical device name to a disk directory.
  625.  
  626. eg.     assign z: df1:zshell_source
  627.   Now if you do a DIR Z: you will get a directory of df1:zshell_source.
  628.   Similarly, the default device names can be reassigned.
  629. eg.     assign libs: df1:libs
  630.  
  631. * Typing ASSIGN with no parameters, will list the current device
  632.   assignments.
  633. eg.     assign
  634.  
  635. * Only for OS2.0+:
  636.  "ASSIGN name: REMOVE" or "ASSIGN name: dir REMOVE" removes that assign
  637.  "ASSIGN name: dir ADD" assigns multiple dirs to name:
  638.  "ASSIGN name: pathname DEFER" will become a normal assign when accessed
  639.   the first time. So you can assign to a path that does not exist yet.
  640.  "ASSIGN name: pathname PATH" assigns to a path. Similar to DEFER, but
  641.   will not converted into a normal assign. If you have "assign bla: df0:
  642.   path" and do "list bla:", you will get the directory of the disk
  643.   inserted NOW (!) in df0:.
  644. ============================================================================
  645. CD [destination]
  646. * Changes the current directory to "destination". If no parameter
  647.   is given, the current directory's name is shown. It is easier to
  648.   change the directory by simply typing its name (without CD).
  649.  
  650. eg.     cd ram:
  651.         ram:t               {same as "cd ram:t"}
  652. ============================================================================
  653. COPY [-R] [-S] source1 [source2] ... [destination]
  654.  
  655. * COPY copies all source files or files in the source directories to the
  656.   destination directory. If the destination directory does not exist, it
  657.   will be created. If no destination is given (in this case you can specify
  658.   only one source file/dir ofcourse), the current directory will be taken.
  659. * You can use wild cards to specify files.
  660. * The filedate, filecomment and protection-bits are copied with it.
  661. * With Option -R given, subdirectories and the files and
  662.   directories in there are also copied (recursive copying).
  663.   If you have the ALL FLAG set, you can use ALL as last
  664.   argument instead of -R.
  665. * With Option -S given, it sorts. But who needs that ?
  666.  
  667. Note: Copying will be done in 50KBytes blocks. This should be a good value.
  668.  
  669. eg.     copy c:dir df1:c
  670.         copy dir list type cd df1:c
  671.         copy -r df0:devs df1:devs
  672.         copy -r source:*.s ram:
  673.         copy df0: df1:          {only copy the files in df0: to df1:}
  674.  
  675. * You can also copy a file to a file. This is like copying to a dir and
  676.   then renaming. Date, comment and bits are not copyied with it.
  677. eg      copy df0:fred ram:wilma
  678.   With that you can print a file etc.
  679. eg.     copy file PRT:
  680.         copy CON: barney
  681. ============================================================================
  682. DELETE [-R] [-Q] source1 [source2] [source3] ... [FORCE]
  683.  
  684. * Deletes one or more files or directories ("source1","source2",...).
  685. * "source" can be a wild card file description.
  686. * If you specify the -r option when deleting a directory,
  687.   then all subdirectories are recursively deleted also. Otherwise (if the -r
  688.   option is not given) only the files in the specified directory are deleted.
  689. * To be safe, delete requests you to really delete a file. You can answer
  690.   with "Y" (yes) if you want this file to be deleted
  691.        "N" (no) if you do not want this file to be deleted
  692.        "A" (all) if you do not want to be asked anymore
  693.        "Q" (quit) if you want to abort deleting.
  694.   To avoid asking, use option -q , but be careful !
  695. * Ever got the problem with thousands of delete-protected files ?
  696.   Solution is simple: Use FORCE as last option.
  697.  
  698. NOTE: "delete libs" (libs is a directory) tries to delete the directory
  699.   "libs", not the files in there ! Use "delete libs/*" for that !
  700.  
  701. WARNING: You can hardly get back what you have deleted !
  702.   So be careful, especially when using the -r option !
  703.   (Try DISKSALV for getting lost files back, DO NOT USE DISCDOCTOR!)
  704.  
  705. eg.     delete fred wilma barney betty dino
  706.         delete df0:devs df1:c df1:data ram:
  707.         delete menu/* force
  708.         delete -r devs:
  709.         delete -r df1:  {better use "delete device df1:"}
  710. ============================================================================
  711. DELETE DEVICE devicename [name [filesystem]]
  712.  
  713. OS2.0+ only !
  714. * Has the same effect as "FORMAT DRIVE device NAME name QUICK NOICONS".
  715.   devicename is something like DF0: etc., but better not DH0: !
  716.   The name and the filesystem of the disk will be kept the same, except
  717.   you specify new ones. See INFO on how filesystems look like.
  718. eg.: You have an Oldfilesystem- (OFS) disk and want to get a Fastfilesystem-
  719.     (FFS) disk out of it. No need to format the whole disk ! Use
  720.         delete device df0: empty ffs
  721. ============================================================================
  722. DIR [-Q] [-R] [source1] [source2] ...
  723.  
  724. * Lists the directory of the "source" to the screen. Hitting space
  725.   will pause the listing and backspace will continue it. Files are
  726.   shown with their size in bytes. DIR lists the current directory
  727.   if no parameter is given. If "source" is a filename, then only
  728.   that file is listed. If the option "-q" is not given, the filenames
  729.   will be sorted alphabetically. With the option "-R" given
  730.   it will list recursive.
  731. * All files/dirs with the H-bit (see PROTECT) set, will not be shown.
  732.   All files that are ignored by FILENAMECOMPLETION are also hidden.
  733. * If it is a link, it shows H (for hardlinks) or S (for softlinks) after
  734.   the filesize. See MAKELINK.
  735.  
  736. eg.     dir df0:
  737.         dir -q devs:printers/hp*
  738. ============================================================================
  739. FILENOTE file|directory comment
  740.  
  741. * FILENOTE creates or changes a comment of the file or directory.
  742.   This comment can be up to 116 characters long and can be displayed
  743.   using the LIST command. It is useful if the filename does not say
  744.   what for this file is. Add a comment to this file and you will
  745.   forever know what this file does.
  746.  
  747. eg.     filenote devs:mountlist "This is used by the mount command"
  748. ============================================================================
  749. HTYPE source
  750.  
  751. * HTYPE outputs a hex listing of the file specified. Output is the
  752.   same as the M command. SPACE pauses the listing, BACKSPACE
  753.   gets it going again, and CTRL-C will abort the listing.
  754.  
  755. eg.     htype c:list
  756. ============================================================================
  757. INFO
  758.  
  759. * Lists lots of information about all available volumes (like disks).
  760.   These columns mean:
  761.   NAME: Name of the device containing the volume
  762.   UNIT: Unitnumber, not very interesting
  763.   SYS:  Filesystem, can be one of:
  764.         OFS : Oldfilesystem (old fashioned and slow)
  765.         FFS : Fastfilesystem (needs OS2.0+)
  766.         INO/INF : International OFS/FFS
  767.         DCO/DCF : Directory Cache OFS/FFS (needs OS3.0+)
  768.         MSD : CrossDOS Filesystem (MessyDOS)
  769.         ??? : Unknown
  770.   SIZE: Maximum useable size of the Volume in KBytes (1024 Bytes)
  771.   FREE: Free/useable size in KBytes
  772.   FULL: Ratio between used size and maximum size
  773.   BLOCK: Size of a single block in Bytes
  774.   STATUS: Says if it is possible to write to that volume
  775.   ERR:  Number of soft errors, I only saw 0 yet
  776.   VOLUME: Name of the volume (name of the disk).
  777. * Note: It would not make sense to show the free size in Bytes,
  778.   because space can only be allocated in whole blocks and one
  779.   block is at least 488 Bytes large.
  780.  
  781. eg.     info
  782. ============================================================================
  783. JOIN [-R] [-S] [sourcefile1] [sourcefile2] ... destfile
  784.  
  785. * JOIN concatenates one or more files to form a new file (destfile).
  786. wild cards are supported.
  787. * See  COPY for more.
  788.  
  789. eg.     join fred.doc roy.doc dog.doc mydocs.doc
  790. ============================================================================
  791. LIST [-R] [-Q] [source]
  792.  
  793. * Lists the directory of the "source" to the screen. Hitting space
  794.   will pause the listing and backspace will continue it.
  795. * LIST acts similar to DIR, but outputs more information:
  796.   - Hidden files will be shown
  797.   - Shows the date and time of the last change. See DATE.
  798.   - Shows the protection-bits. See PROTECT.
  799.   - If available, the comment will be shown. See FILENOTE.
  800.   - If it is a link, it shows where it is linked to. See MAKELINK.
  801.     (Note:softlinks are resolved by ReadLink(), hardlinks by simply Lock())
  802. * LIST supports recursive listing. That means the contents of all
  803.   subdirectories are shown. To use it, specify the -r option.
  804. * With the -q option given, it does not sort nor print
  805.   comments and links.
  806.  
  807. eg.     list
  808.         list sys:system
  809.         list -q df0:
  810.         list -r -q *.info    {show all INFO-files in the current and
  811.                               in the sub-directories}
  812.         list -r ram:~*.info  {show all except *.info files in RAM:}
  813. ============================================================================
  814. LOCK device ON|OFF
  815.  
  816. * "LOCK device ON" locks the write-access to a device
  817. eg.     lock df0: on
  818.   will make it impossible to write to or change something on the
  819.   disk inserted in DF0:
  820. * "LOCK device OFF" makes write-access to a device possible again.
  821.  
  822. eg.     lock dh0: on
  823.         lock dh0: off
  824. ============================================================================
  825. MAKEDIR [directory1] [directory2] ...
  826.  
  827. * Creates one or more directories of the names specified.
  828.  
  829. eg.     makedir temp
  830.         makedir c l s libs devs fonts
  831.         makedir devs/printers ram:c
  832. ============================================================================
  833. MAKEICON filename [icontype]
  834.  
  835. OS2.0+ only !
  836. * Makeicon creates a default icon for the file "filename". "icontype" can
  837.   be one of: DISK, DRAWER, TOOL, PROJECT, GARBAGE, DEVICE, KICK or APPICON
  838.   "filename" is without appending .info.
  839.   Note that DEVICE and APPICON will not be available on most systems.
  840. * OS3.0+ only: Makeicon without icontype pops up the information-window
  841.   of Workbench.
  842.  
  843. eg.     makeicon barney tool
  844.         makeicon sys:libs drawer  {"makeicon libs: drawer" will not work}
  845.         makeicon sys:system/format
  846. ============================================================================
  847. MAKELINK linkname filename HARD|SOFT
  848.  
  849. OS2.0+ only !
  850. * Makelink creates a Hardlink or Softlink to the file or directory
  851.   "filename". "linkname" must be a filename, that does not exist yet.
  852.   You can use links like the file/directory itself, but they need nearly
  853.   no additional diskspace. In most cases you would use Hardlinks.
  854. * If you delete a file a Hardlink is linked to, the Hardlink will become
  855.   the file itself. Hardlinks cannnot work accross devices, use Softlinks
  856.   for that. (Hardlinks are resolved by the filesystem)
  857. * Softlinks are links to a path, that is checked every time when accessed,
  858.   so a link to DF0: depends on the disk inserted in DF0: .
  859.   (Softlinks are resolved by AmigaDOS)
  860.   I wonder why Softlinks are not supported by the commands in the C:
  861.   directory even of Workbench 3.0 ? A bit old fashioned !
  862.  
  863. eg.     makelink muchmore ppmore hard
  864.         makelink sys:commands c: hard
  865.         makelink readme df0:readme soft  {so with "more readme" you will
  866.     see the readme-file on the disk currently inserted into DF0: }
  867. ============================================================================
  868. MORE source [line count]
  869.  
  870. * MORE acts as a simple (ANSI) text file viewer. By default, it will
  871.   show some lines of a text file, then wait for some user input.
  872.  
  873.  *After pressing "H" you get some Help information.
  874.  *To move around in the text, you can use the CURSOR-KEYS:
  875.     UP        : Go one line up
  876.     DOWN      : Go one line down
  877.     LEFT      : Go one page up
  878.     RIGHT     : Go one page down
  879.     SHIFT-UP  : Go to the top of the text
  880.     SHIFT-DOWN: Go to the bottom of the text
  881.  *SPACE does the same as SHIFT-DOWN, BACKSPACE the same as SHIFT-UP.
  882.   You can also use the keys 1,2,3,7,8 and 9 of your numeric keypad.
  883.  *The key "S" will prompt you what to Search for. If you just press
  884.   RETURN, then the last item will be searched for. Searching begins
  885.   at the second top line shown. If the item is found, the line, it
  886.   is in, is displayed as the first line.
  887.  *The key "W" Writes the text to a file. If you enter PRT: as filename,
  888.   the text is send to the printer. Press just RETURN to cancel.
  889.  *Press "J" to Jump to a special position.
  890.  *Press "R" after you have Resized the window.
  891.  *Typing any other key will abort you back to the shell.
  892.  
  893. eg.     more readme
  894.  
  895. * Specifying the optional line count will allow you to show more or
  896.   less than the default number of lines, that will fit exactly on the
  897.   window. Useful when using FLAGS CUT OFF.
  898.  
  899. eg.     more contents 12
  900.         more super.doc 25
  901. ============================================================================
  902. MOVE [-R] [-S] source1 [source2] ... [destination]
  903.  
  904. * This is very similar to the copy-command, but all files/directories
  905.   copyied will be deleted afterwards. If an error happens, the source will
  906.   not be deleted. If it was OK, you will see "... copyied"
  907. * If source and destination are on the same device it uses rename
  908.   instead. This is quicker and needs less disk accesses. Then you will
  909.   see "...moved".
  910. * Note the difference between "move dir" and "move dir/*".
  911.  
  912. eg.     move ram:a ram:b
  913.         move -r df0:* df1:
  914.         move c:mount devs:
  915. ============================================================================
  916. PROTECT [-R] [-S] filename1 [filename2] ... [+|-|h|s|p|a|r|w|e|d]
  917.  
  918. * Allows you to alter/see the protection bits associated with a file
  919.   or a directory. To see it, you can also use LIST.
  920.   You can use wild cards to process multiple files.
  921. * See COPY  how to use -r and -s.
  922. * PROTECT filename +bits_to_set -bits_to_clear
  923.   Sets all bits_to_set and resets all bits_to_clear.
  924.   You can give one + or one - or both or both not.
  925.  
  926. eg.     protect game +hp -rwd
  927.         protect monitor +hsparwed
  928.         protect -r df0:* -d
  929.  
  930. Bits:   "h"     hidden  V1.3
  931.         "s"     script  V1.3
  932.         "p"     pure    V1.3
  933.         "a"     archive V1.3 -> is reset when file is changed
  934.         "r"     readable
  935.         "w"     writable
  936.         "e"     executable -> will be checked before executing
  937.         "d"     deletable
  938. ============================================================================
  939. RELABEL drive newname
  940.  
  941. * RELABEL renames the disk specified with the newname given.
  942.  
  943. eg.     relabel Empty: MY_DISK
  944.         relabel df0: FISHMONGER
  945. ============================================================================
  946. RENAME source destination
  947.  
  948. * Renames the file or directory of name "source" to that of
  949.   "destination". You can use this to move files on a disk.
  950.  
  951. eg.     rename df0:c/list df0:ls        {moves and renames}
  952.         rename ed Editor                {just renames}
  953. ============================================================================
  954. RESIDENT [command1] [command2] ...
  955.  
  956. * RESIDENT allows you load commands into memory, such that they
  957.   will execute immediately, rather than be loaded from disk all the
  958.   time. The benefit of RESIDENT over saving commands on the RAM:
  959.   disk is that only one copy of the command is in memory all the
  960.   time. RAM: based commands will use up twice as much memory when
  961.   the command is being executed.
  962.  
  963. * The limitation of RESIDENT is that only certain commands will
  964.   work. Generally, all commands which have their PURE bit (see
  965.   PROTECT) set can be made RESIDENTABLE. However, RESIDENT
  966.   does not check whether the PURE bit is set before loading, and
  967.   hence you can try out commands to see if they work. They'll
  968.   always work the first time. Its only when executing the 2nd
  969.   time that the Amiga will likely crash.
  970.   Note: Crunched programs will most likely not work.
  971.  
  972. * Typing RESIDENT with no parameters will show the current list
  973.   of resident commands:
  974.     ADRESS is useful for programmers
  975.     USECOUNT says how many times it is used right now
  976.              ROM internal residents have negative values
  977.     NAME means the name  (hard to guess :)
  978.  
  979. * Typing one or more command names after RESIDENT will make those
  980.   commands resident. ZShell will search the command search path
  981.   to try and find them.
  982.  
  983. eg.     resident c/list c/cd c/date c/avail
  984.         resident ed
  985. ============================================================================
  986. SEARCH file search_string
  987.  
  988. * SEARCH searches for the search_string in the file. The file can
  989.   be a binary (eg. executable) or a text. Each occurance
  990.   will be printed on the window with highlighted search_string.
  991.   If the file is a text, the whole line will be printed.
  992.   If it is a binary file, it will be printed from the occurance
  993.   to the next NULL or LF.
  994. * Searching is case independent (of course!).
  995. * To search for a string at the beginning of a line (textfile only)
  996.   put a point (.) before the search_string.
  997.  
  998. eg.     search zshell.doc "binary (eg."
  999.         search s:startup-sequence .assign
  1000.           {show all assigns, but not "resident assign"}
  1001.         search c:mount $ver:    {show version number and date,
  1002.                             should work with all newer executables}
  1003. ============================================================================
  1004. SETDATE file|directory [date/time]
  1005.  
  1006. * SETDATE changes the date-of-last-change (DOLC) of a file or directory.
  1007.   The DOLC can be shown by simply listing this file with LIST.
  1008. * SETDATE with no date/time given sets the DOLC to the systemtime
  1009.   (see DATE,SETCLOCK).
  1010. * If you want to set the DOLC to a special date you have to specify
  1011.   the date or time or both in a format described at DATE.
  1012.  
  1013. eg.     setdate ram:newthings
  1014.         setdate devs:mountlist 21.8.71      {very old}
  1015.         setdate murks 18:24:12 12-24-96     {future}
  1016. ============================================================================
  1017. TYPE source
  1018.  
  1019. * Prints to the screen the ASCII/ANSI text file specified as "source".
  1020.   Hitting any key will pause the listing. Backspace will restart it.
  1021.   CTRL-C will abort the listing.
  1022. * Use MORE instead of TYPE, if possible.
  1023.  
  1024. eg.     type readme
  1025. ============================================================================
  1026. Builtin Commands for Scripts and Controlling
  1027.  
  1028. Following there are descriptions of the other commands which are
  1029. builtin in ZShell (and therefore need not be loaded from disk).
  1030. Square brackets [] mean that the argument enclosed in is optional.
  1031. A vertical bar | separates multiple possibilities, choose only one.
  1032.  
  1033. Alias [variable] [definition]
  1034. Ask [question]
  1035. Avail [-C]
  1036. Border ON|OFF [number]
  1037. Cls
  1038. Date [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  1039. Echo [string]
  1040. Else
  1041. EndCLI [-C]
  1042. EndIf
  1043. Eval expression
  1044. Execute source
  1045. FailAt [failat_level]
  1046. Fault [error_number]
  1047. Flags [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL] [ON|OFF]
  1048. Help [topic]
  1049. If [NOT][WARN][ERROR][FAIL][EXISTS file]
  1050. Lab label
  1051. MemClk ON|OFF|ALARM
  1052. NewCLI [-Wnew_window] [-Sstart_script] [-Ccommand]
  1053. Path [-C] [path1] [path2] [path3] ...
  1054. Prompt [string]
  1055. Quit [error_code]
  1056. Review [bytesize|S|C]
  1057. Run [-C] commandline
  1058. SetClock LOAD|SAVE
  1059. Skip label
  1060. Stack [size]
  1061. UnAlias [alias1] [alias2] [alias3] ...
  1062. Wait timeout
  1063. Comments
  1064. ============================================================================
  1065. ALIAS [variable] [definition]
  1066.  
  1067. * ALIAS assigns a variable name to a definition. The variable name
  1068.   can be up to 15 characters long, and the definition can be up to
  1069.   about 360 characters long.
  1070.  
  1071. * Typing ALIAS with no parameters at all, will generate a list of all
  1072.   current alias definitions.
  1073.   eg.   alias
  1074.  
  1075. * Aliasing of Function Keys
  1076.   eg.   alias f1 ed df0:s/startup-sequence^M
  1077.   This example assigns the unshifted F1 key to "ed df0:s/startup-sequence"
  1078.   with following return. Note that the ^M characters puts an auto
  1079.   carriage return in the definition.
  1080.   eg.   alias F10 cd df0:^M
  1081.   This sets shifted F10 to "cd df0:<CR>".
  1082.   You can use quotes to make it look better:
  1083.         alias f2 "cd df1:^M"
  1084.         alias f4 "genim2 "
  1085.         alias F9 "scribble df0:text/"
  1086.   If you want to use a semicolon in the alias, you need to use quotes:
  1087.         alias f1 "a68k z.a;blink z.o to z^M"
  1088.   or leave away the quotes and use a backslash before the semicolon:
  1089.         alias f1 a68k z.a\;blink z.o to z^M
  1090.  
  1091. * Aliasing of commands
  1092.   eg.   alias mv rename
  1093.   This allows an alternate name for rename. i.e. mv.
  1094.   So you could type
  1095.         mv oldname newname      {to rename oldname to newname}
  1096.  
  1097.   eg.   alias as a68k
  1098.         alias pp powerpacker
  1099.         alias go "a68k zsh.s;blink zsh.o to zsh"
  1100.         alias cped copy df0:c/ed
  1101.   You would use this last alias, if you need to copy a particular
  1102.   file a lot. So, to copy c/ed to ram: use:
  1103.         cped ram:
  1104.  
  1105. * You can also pass external parameters to an alias.
  1106.   eg.   alias al "%1 a68k $1.s;blink $1.o to $1"
  1107.   Typing
  1108.         al test
  1109.   will assemble test.s using a68k, then blink test.o to become test.
  1110.  
  1111. You can specify upto eight parameters to pass to a command alias.
  1112. At the start of the alias definition, specify the parameters to pass
  1113. with the variables %0 thru %7. These need not be in sequence. The
  1114. first %n will be assigned to the first parameter, the 2nd %n to
  1115. the 2nd parameter etc.
  1116. Insert the corresponding variables $0 thru $7 at the points in the
  1117. alias definition where that parameter is to appear.
  1118. eg.     alias disp %1 %2 %3 echo "$3 $2 $1"      {is the same as: }
  1119.         alias disp "%1 %2 %3 echo "$3 $2 $1""    {note the quotes}
  1120.         alias cram %0 %1 %2 %3 copy $0 $1 $2 $3 ram:
  1121.         alias go %5 %1 %6 %2 echo "1st-$5 2nd-$1 3rd-$6 4th-$2"
  1122.  
  1123. * Command aliases can be nested to 1 level.
  1124.   eg.   alias clear echo ^L\;alias cdir "%1 clear;cd $1;dir"
  1125.  
  1126. * An important point about aliases, is that you can redefine the
  1127.   existing internal command names.
  1128.   eg.   alias help "type help_screen"
  1129.   This would make it so that pressing HELP or typing H E L P would
  1130.   not generate the standard help command list, but would type the
  1131.   file called  help_screen to the screen. Similarly
  1132.   eg.   alias copy c:copy       {replace copy by disk-based copy}
  1133.         alias info c:dfree
  1134.         alias list .list        {replace list by disk-based list}
  1135.  
  1136. * See UNALIAS for how to remove alias definitions.
  1137. ============================================================================
  1138. ASK [question]
  1139.  
  1140. * ASK prompts the user with a question requiring a Yes or No
  1141.   answer. If the first letter of the users response is "Y", ASK
  1142.   returns code WARN. Responding "E" returns ERROR, "F" returns
  1143.   FAIL. Any other letter will result in return code OK.
  1144.   The question can include ASCII characters as well as control
  1145.   codes as per the ECHO command.
  1146.  
  1147. eg.     ask "Do you want commands copied to ram? "
  1148.         if warn
  1149.                copy c: ram:
  1150.         endif
  1151.  
  1152. Note: You can redirect the ANSWER to a file by redirecting the OUTPUT.
  1153. eg.     ask >ENV:CallIt        {The answer is written to CallIt}
  1154. ============================================================================
  1155. AVAIL [-C]
  1156.  
  1157. * AVAIL shows the available memory as:
  1158.   1.Total chip memory free,
  1159.   2.Total fast memory free,
  1160.   3.Total memory free.
  1161.  
  1162. * With option "-c" given, it tries to free unused memory
  1163.   (remove unused libraries, devices and the help manual)
  1164.  
  1165. eg.     avail
  1166.         avail -c
  1167. ============================================================================
  1168. BORDER ON|OFF [number]
  1169.  
  1170. * Switches the border of the window on or off. If the border is off
  1171.   there will fit some more characters in a line; this can be useful
  1172.   when viewing texts with MORE.
  1173. * If you run OS1.3-, you should do a CLS or "echo ^L" after
  1174.   using BORDER OFF.
  1175. * If you specify a number after ON or OFF, the window is resized as
  1176.   large as possible. The number means the wanted distance of the
  1177.   window top to the screen top in pixels. By specifying a negative
  1178.   value the window will just not hide the screens menu bar.
  1179.  
  1180. eg.     border off
  1181.         border on 0         {fills full screen}
  1182.         border off -1       {does not hide the menu bar}
  1183.         border on 10;cls    {with OS1.3-}
  1184. ============================================================================
  1185. CLS
  1186.  
  1187. * CLS clears the window.
  1188.   It also resets the consolehandler, so if you see lots of funny
  1189.   characters on the window, try CLS.
  1190. * You can do the same by using "echo ^[c".
  1191. * CTRL L only clears the window (same as "echo ^L").
  1192.  
  1193. eg.     cls
  1194. ============================================================================
  1195. DATE [hh:mm:ss|dd.mm.yy|mm-dd-yy]
  1196.  
  1197. * DATE without arguments shows the actual date and time (systemtime).
  1198. * You can specify one or two arguments to set date or time or both.
  1199.   The time format must be in HOUR:MINUTE:SECOND . Do not forget the
  1200.   colon (:) between. Give only one or two digit numbers.
  1201.   There exists two formats for setting the date. First is
  1202.   DAY.MONTH.YEAR . Second is MONTH-DAY-YEAR . Use only one or two
  1203.   digit numbers.
  1204.  
  1205. eg.     date
  1206.         date 14:15:00         {quarter past two PM}
  1207.         date 12.5.94          {12th of May in 1994}
  1208.         date 3-30-88 8:12:45  {30th of March in 1988 in the morning}
  1209. ============================================================================
  1210. ECHO [string]
  1211.  
  1212. * Prints the "string" to the screen. If you want spaces in the
  1213.   string, make sure the whole string is enclosed in quotes. If you
  1214.   want to print special control characters (eg. ctrl-L clear screen)
  1215.   then prefix the control letter with a ^ character. If you want to
  1216.   print double quotes, then use the \ character before the qoutes.
  1217.   If you want to print some special characters like the CSI ($9B),
  1218.   you can put a (hexa-)decimal number after the ^ character; you can
  1219.   separate it from the next character by a point (.) . Do not forget
  1220.   the ^J at the end of a line.
  1221.  
  1222. eg.     echo hello^J
  1223.         echo "Hello world !"
  1224.         echo Hello world !
  1225.         echo "^Lthe screen was just cleared^J"
  1226.         echo "^Lline 1^Jline 2^Jline 3^J"
  1227.         echo "these are double quotes ->\"^J"
  1228.         echo ^*33mColor^*32mful^J
  1229.         echo ^*4mUnderlined^*0mNormal^J
  1230.  
  1231. * Some common control codes are:
  1232.   ^7    ^G      bell (makes a DisplayBeep)
  1233.   ^10   ^J      linefeed.
  1234.   ^12   ^L      clear screen.
  1235.   ^13   ^M      carriage return.
  1236.   ^24   ^X      clear line.
  1237.   ^27   ^[      escape.
  1238.   ^$9b  ^*      CSI (command sequence introducer).
  1239. ============================================================================
  1240. ELSE
  1241.  
  1242. * ELSE marks the middle of an IF statement. All statements
  1243.   following it, and before the ENDIF statement will be executed
  1244.   only if the IF condition is FALSE. See IF for usage.
  1245. ============================================================================
  1246. ENDCLI [-C]
  1247.  
  1248. * Exits you from ZShell back to the AmigaDOS CLI prompt or Workbench.
  1249. * If the option "-c" was specified, it will clear ZShell as a
  1250.   resident: only in low memory situations needed.
  1251. * Instead of using ENDCLI you can simply press the ESC key or click
  1252.   on the close gadget, if available.
  1253.  
  1254. eg.   endcli
  1255.       endcli -c
  1256. ============================================================================
  1257. ENDIF
  1258.  
  1259. * ENDIF marks the end of an IF statement. See IF for usage.
  1260. ============================================================================
  1261. EVAL expression
  1262.  
  1263. * EVAL evaluates the "expression" as a reverse polish expression,
  1264.   and displays the answer in decimal and hex notation. Reverse
  1265.   Polish Notation (RPN) is used in Forth and in Hewlett Packard
  1266.   calculators (the best calculators in the world). It is based on
  1267.   how arithmetic is actually done at the lowest possible level.
  1268.   RPN allows calculating complex expressions without using brackets.
  1269.  
  1270. eg.     eval 4 5 +
  1271.   This gives the answer 9. When a number is found, it is "pushed"
  1272.   onto the arithmetic stack. The + always adds the last two numbers
  1273.   on the stack.
  1274.  
  1275. eg.     eval 7 2 3 + -
  1276.   This gives the answer 2. It is the same as (7 - (2 + 3)). See,
  1277.   7 is first pushed onto the stack, followed by 2, then 3. The +
  1278.   adds together the 2 and 3 and leaves the result 5 on the stack.
  1279.   Which means that the number 7 followed by 5 are left on the
  1280.   stack. The - subtracts the last entry (5) on the stack from the
  1281.   one before it (7), leaving the result 2.
  1282.  
  1283. eg.     12 * (3 + 9)                    > eval 12 3 9 + *
  1284.         (15 - 4) * (6 + 18)             > eval 15 4 - 6 18 + *
  1285.         (6 * ((87 + 13) / (2 * 25)))    > eval 6 87 13 + 2 25 * / *
  1286.  
  1287. * EVAL only performs 32 bit integer arithmetic.
  1288.   Negative numbers are prefixed with - .(hexadecimal they are
  1289.   shown as a 31 bit integer with bit 32 set, as usual)
  1290.   Prefixing positive numbers with + is optional.
  1291.  
  1292. eg.     eval +5 -3 +    {results in 2  hex:$00000002}
  1293.         eval -5 3 +     {results in -2 hex:$fffffffe}
  1294.  
  1295. * EVAL supports decimal, hexadecimal and binary  numbers.
  1296.   If you prefix the number with $, the number is hex
  1297.   If you prefix the number with %, it is binary.
  1298. Programmers: For BPTR-APTR conversion you can use & to specify
  1299.   a hexadecimal APTR when asked for a BPTR and vice versa with §.
  1300. eg.     eval $c00000 $a0 16 * +
  1301.  
  1302. * EVAL can also be used to perform base conversions (to dec or hex)
  1303. eg.     eval $ca
  1304.         eval %10110001
  1305.         eval 45
  1306.         eval &5a8
  1307.  
  1308. * The operators + - * / & | @ ! are supported.
  1309.   The & allows logical AND'ing. And | allows logical OR'ing.
  1310.   The @ is similar to PEEK in BASIC.
  1311.   Conversely, ! is similar to POKE in BASIC
  1312. eg.     eval $80 $21 $08 | | $aa &
  1313.         eval $67 %11001011 &
  1314.  
  1315.         eval $c00000 @
  1316.   This prints out the long word in memory locations $c00000 - $c00003.
  1317.  
  1318.         eval $aa55aa55aa $40000 !
  1319.   This pokes the long word $aa55aa55aa into locations $40000 thru $40003.
  1320.  
  1321. * For environment handling you can specify the value of an
  1322.   environment variable with | followed by the name.
  1323.   To store the result in a variable, redirect the output.
  1324.  
  1325. eg.     eval >ENV:aa |ENV:bb 1 +
  1326.   This adds 1 to the value in ENV:bb and stores the result in ENV:aa
  1327. * If the result was 0 an error (fail-level 10) will be returned.
  1328.   If it was negative, a warn (5) returns. (Not when redirecting output)
  1329. ============================================================================
  1330. EXECUTE source
  1331.  
  1332. * Executes the AmigaDOS script file of name "source" using an
  1333.   AmigaDOS shell, so no compatibility problems should occur.
  1334.   However in AmigaDOS scripts you cannot use ZShell-internal commands.
  1335.  
  1336. * To execute a ZShell script you have to set the S-protection flag
  1337.   and then you can execute it treating like a normal command.
  1338.   All ZShell commands, as well as commands from disk are valid within a
  1339.   ZShell script file.
  1340.  
  1341. * You can break scripts by pressing CTRL-D.
  1342.  
  1343. eg.   execute install_hard_disk
  1344. ============================================================================
  1345. FAILAT [failat_level]
  1346.  
  1347. * FAILAT sets the error code level at which scripts (and multiple
  1348.   commands on one line) will be aborted. The default level is 10.
  1349.   Most commands return 10 as an error, (20 for serious errors)
  1350.   while compilers returning Warning type errors will return 5.
  1351.   Hence, the default of 10 will allow Warnings to occur without
  1352.   the script (or line) being aborted. If a command returned an error
  1353.   code higher than the failat level, it will be printed out on the
  1354.   window.
  1355.  
  1356. eg.     failat 20       {sets failat level to 20}
  1357.  
  1358. * If you do not specify a failat level, the current setting is
  1359.   shown.
  1360.  
  1361. eg.     failat
  1362. ============================================================================
  1363. FAULT [error_number]
  1364.  
  1365. * FAULT displays a textual error message of the given DOS-error-number
  1366.  
  1367. eg.     fault 103
  1368.   (says something like "no free store", go and buy some extra memory :-)
  1369. ============================================================================
  1370. FLAGS [CHECK|MATCH|ICON|WILD|ERRORS|DEBUG|CUT|ALL|HIDE] [ON|OFF] ...
  1371.  
  1372. * With this you can configure some things. Use FLAGS without arguments
  1373.   to see the current settings. The meaning of the keywords are:
  1374.  
  1375. CHECK: (default off) Activates or deactivates the programmers status line.
  1376.   The status line (if activated) will only appear once a disk based
  1377.   or resident program has been executed. The line appears as follows:
  1378.   Result2: 0  time = 00:00:23.66  changes-> chip: 0  fast: 0  total: 0
  1379.   Result2 shows the error code that can be asked for with IoErr.
  1380.   Time shows how long the program took to execute in hours,
  1381.   minutes, seconds, hundredths (This time does NOT include the time
  1382.   it takes to load the program from disk). Changes show if the program
  1383.   has left any memory still allocated. i.e. if 200 bytes of chip
  1384.   memory were left allocated by the program, then you see "chip: -200".
  1385.   The Return code (the program returns in D0) is shown as Fail-Level.
  1386.  
  1387. MATCH: By default Filenamecompletion shows all files that matches
  1388.   the given pattern. You can switch this off by using "FLAGS MATCH OFF".
  1389.  
  1390. ICON: (default off, OS2.0+) This enables iconifying when pressing ESCAPE
  1391.   or clicking the Close-Gadget. To exit from ZShell use ENDCLI.
  1392.   You need Workbench running and ZShell must have opened its own window
  1393.   (start from Workbench, start with newcli or used -W when started from
  1394.   CLI).  When iconifying, a icon is created on the Workbench and the
  1395.   window is closed. Double-clicking on this icon or dragging a file into
  1396.   it pops ZShell up again. Use the ToolTypes "ICONNAME", "XPOS" and
  1397.   "YPOS" to determine the name and position of the icon.
  1398.   ToolType "ICONIFY" lets ZShell start in iconifyed mode.
  1399.  
  1400. WILD: (default off, OS2.0+) By enabling this, you force ZShell to use
  1401.   AmigaDOS wildcard-patternmatching instead of the internal matcher. Use
  1402.   this if you like #? rather than * or if you need multiple * in one name.
  1403.  
  1404. ERRORS: (default on) Most external commands show their errormessages
  1405.   themselves, so you often see double error messages. Using ERRORS you can
  1406.   switch off this behaviour, but you risk to miss some errormessages !
  1407.   If you see a large errornumber, this command assumed that there will be
  1408.   no error-output and does not set the correct errorcode --- this is
  1409.   badly programmed !
  1410.  
  1411. DEBUG: (default off) This is for testing/debugging script-files. Switching
  1412.   DEBUG to ON, the commands from the script appear on the window as they
  1413.   are processed (you need to execute the script for that, ofcourse),
  1414.   and redirection will be ignored (so you will see even output to >NIL: ).
  1415.  
  1416. CUT: (default on) For MORE. If ON, lines longer than the window will be
  1417.   cutted at the end. If OFF, too long lines will wrapped to next line.
  1418.  
  1419. ALL: (default on) Enables the substitute ALL for the option -R.
  1420.   Note that -R must be the first argument (or second after -Q) and ALL
  1421.   must be the last argument.
  1422.   (Only in this release you can place ALL anywhere you like)
  1423.  
  1424. HIDE: (default on) When on the cursor will be hidden for outputting. This 
  1425.   improves scrolling speed. Switching off is only thougth for debugging.
  1426.  
  1427.  
  1428. eg.     flags icon on all off
  1429.         flags errors off all off check on
  1430.         flags e. off a. off ch. on          {same as above}
  1431. ============================================================================
  1432. HELP [topic]
  1433.  
  1434. * HELP shows the lines of this manual corresponding to the topic.
  1435.   To see all topics available, type "HELP CONTENTS" . Make sure that
  1436.   the manual "ZShell.doc" is in the current directory or in S: !
  1437.   For some help about a command you can also type "commandname ?" .
  1438.   Type only "?" to read the manual with MORE.
  1439. Note: Instead of typing the topic you can type just some starting
  1440.       characters.
  1441. Note: The manual is only loaded once and will stay in memory till
  1442.       you use AVAIL -C or ENDCLI -C
  1443.  
  1444. eg.    help contents       {"help cont" will do the same}
  1445.        help copy
  1446.        makedir ?
  1447.        ?
  1448.  
  1449. * HELP without a topic lists the names of all available ZShell
  1450.   commands to the screen. This does not need the manual.
  1451.   HELP can also be invoked by hitting the HELP key.
  1452.  
  1453. eg.   help
  1454. ============================================================================
  1455. IF [NOT][WARN][ERROR][FAIL][EXISTS file]
  1456.  
  1457. * The IF command allows conditional execution of statements
  1458.   following it.
  1459. * If the condition specified is true, then execution continues
  1460.   after the IF statement until either an ENDIF or ELSE statement
  1461.   is encountered. If it is an ELSE statement, then all statements
  1462.   between the ELSE and the closing ENDIF are skipped.
  1463. * If the condition is false, then all statements after the IF and
  1464.   before either an ENDIF or ELSE statement are skipped. If an ELSE
  1465.   is encountered, then execution continues for all statements after
  1466.   the ELSE and before the closing ENDIF.
  1467. * IF can examine the state of the return code from the last command
  1468.   execute with WARN, ERROR, and FAIL tests. You can test for the
  1469.   non existence of such a state by including the optional NOT
  1470.   parameter.
  1471.  
  1472. eg.     IF WARN
  1473.            echo "last command returned warnings"
  1474.         ELSE
  1475.            echo "last command did not return warnings"
  1476.         ENDIF
  1477.  
  1478.         IF NOT FAIL
  1479.            echo "last command did not fail"
  1480.         ENDIF
  1481.  
  1482. * IF can also test for the existence of a file or directory.
  1483.  
  1484. eg.     IF EXISTS :system/format
  1485.            echo "this disk has a format command"
  1486.            echo "you can look yourself. I'm not joking"
  1487.         ENDIF
  1488.  
  1489.         IF NOT EXISTS ram:ed
  1490.            copy c:ed ram:
  1491.         ENDIF
  1492. ============================================================================
  1493. LAB label
  1494.  
  1495. * LAB specifies a destination (label) for the SKIP command.
  1496. ============================================================================
  1497. MEMCLK ON|OFF|ALARM
  1498.  
  1499. * MEMCLK is for using a clock shown in the border of the actual
  1500.   window. The current total free and chip free memory are also
  1501.   shown. It can do a DisplayBeep (short flash on all screens) at a
  1502.   specified time. The DisplayBeep can be converted into a sound
  1503.   by using a PD-utility for that or using Workbench 2.1+ .
  1504. * Programmers: There will be only one "MemClock"-Task, even if you
  1505.   run MEMCLK on many windows  -> memory and CPU saving.
  1506. * MEMCLK ON switches the clock on or does nothing if it already
  1507.   exist.
  1508. * MEMCLK OFF switches the clock off or does nothing if it does not
  1509.   exist.
  1510. * MEMCLK ALARM shows the alarm time. If you type a time (see DATE)
  1511.   after ALARM, you set the alarm time. (You cannot set an alarm date
  1512.   or multiple times.) ( MEMCLK A is the same as MEMCLK ALARM )
  1513.  
  1514. eg.     memclk on
  1515.         memclk off
  1516.         memclk alarm
  1517.         memclk a 21:34:07
  1518.  
  1519. * The clock can also be used on non-ZShell windows, but MAKE SURE
  1520.   that the clock is switched OFF BEFORE the window is CLOSED,
  1521.   otherwise you will see THE GURU (or an ALERT with OS2.0+)
  1522.   For example, to get a clock on the Workbench, type in ZShell
  1523.         wait 5;memclk on
  1524.   and press RETURN. Now you have 5 seconds to click on the Workbench
  1525.   screen. For removing use "wait 5;memclk off" .
  1526. ============================================================================
  1527. NEWCLI [-Wnew_window] [-Sstart_script] [-Ccommand]
  1528.  
  1529. * NEWCLI without arguments starts a new ZShell process.
  1530.   Things like paths, aliases and history buffer (!) will be copied to
  1531.   the new ZShell. The input/output window is created with the default
  1532.   specification. The startup script will be S:ZStart.
  1533. * "NEWCLI -Wnew_window" is used for opening a window with different
  1534.   specifications than the default. If you specify just "-W",
  1535.   there will be no window and output will be send to NIL: ; if there
  1536.   is input necessary, the ZShell process will just end (for
  1537.   example at a end of a script).
  1538. * "NEWCLI -Sstart_script" is used if the name of the startup script
  1539.   should be different from S:ZStart. If you specify just "-S", no
  1540.   script will executed.
  1541. * "NEWCLI -Ccommand" executes the command when starting. No script
  1542.   will be executed.
  1543.  
  1544. eg.     newcli
  1545.         newcli -wcon:30/30/400/50/Shell
  1546.         newcli -wcon:50/20/500/100/Hello -ss:shell-startup
  1547.         newcli -sram:doassigns -w
  1548.         newcli "-wcon:30/30/400/50/Great Shell" "-cecho Welcome !"
  1549. ============================================================================
  1550. PATH [-C] [path1] [path2] [path3] ...
  1551.  
  1552. * PATH defines the command search path used by ZShell when searching
  1553.   for disk based commands (see EXECUTING COMMANDS) .
  1554.   If you give the "-c" option, the old search path will be cleared
  1555.   and the new search path consist only of the given paths.
  1556.  
  1557. eg.     path -c c: ram:c df0: df1:
  1558.   This example will make it so that if you type a command which is
  1559.   not internal in ZShell, the resident list will be searched for it,
  1560.   then the current directory, then the c: directory, then the ram:c
  1561.   directory, then df0:, and finally df1:
  1562.  
  1563. * By omitting the -c option, you can add a number of paths onto the
  1564.   existing command search path.
  1565. eg.     path df2:c
  1566.         path df1:bin df1:myprogs
  1567.  
  1568. * If, however, you type path with no parameters, the current search
  1569.   path will be displayed.
  1570.  
  1571. * When starting ZShell the paths of Workbench (if available) will be
  1572.   copied.
  1573.  
  1574. Note: It is a crazy thing that AmigaDOS shell always has C: as last path.
  1575.   In my startup-sequence you can find something like:
  1576.   "path ram: c: sys:utilities sys:system s: sys:prefs"
  1577.   In AmigaDOS shell the C: directory will then be searched twice if a
  1578.   command could not be found. Only having C: as last path slows down
  1579.   access, because most commands are in C:.
  1580.   That is why you have to specify C: explicite in ZShell where you want it.
  1581. ============================================================================
  1582. PROMPT [string]
  1583.  
  1584. * If no parameter is typed, the current prompt setting will be shown.
  1585.  
  1586. eg.     prompt
  1587.  
  1588. * If a prompt string is specified, the current prompt setting
  1589.   will be changed to that string. The character "%" specifies a
  1590.   special prompt option:
  1591.     %p      Insert whole path of current directory.
  1592.     %s      Insert last part of the path of current directory.
  1593.     %n      Insert CLI number
  1594.     %l      Insert current input line number (for fun!)
  1595.     %c      Insert last command (for even more fun ! :-)
  1596. * You can use control sequences like in the ECHO command.
  1597.  
  1598. eg.     prompt "%s> "     {default prompt. Show current directory + ">"}
  1599.         prompt "%n.%p> "  {show CLI number, then current dir, then ">"}
  1600.         prompt Hello!     {shows "Hello!" at the start of every line}
  1601.         prompt %p^J^*32m> {Just try it!}
  1602. ============================================================================
  1603. QUIT [error_code]
  1604.  
  1605. * QUIT forces a script file to end, and return to the shell.
  1606.   An optional error code can be passed back (ie. 5=WARN 10=ERROR
  1607.   15=BAD 20=FAIL etc).
  1608.  
  1609. eg.     quit 5
  1610.         quit
  1611. ============================================================================
  1612. REVIEW [bytesize|S|C]
  1613.  
  1614. With the reviewbuffer you can see that again what scrolled out of the
  1615. window or was redirected. In the reviewbuffer are all outputs stored.
  1616. To see what is in the reviewbuffer just press SHIFT TAB. This activates
  1617. the MORE text reader.
  1618. * "REVIEW bytesize" (re)creates a reviewbuffer with the given size.
  1619. * "REVIEW 0" removes the reviewbuffer.
  1620. * "REVIEW" without arguments shows the adress and size of the current
  1621.   reviewbuffer.
  1622. * "REVIEW C" clears the reviewbuffer.
  1623. * "REVIEW S filename" saves the reviewbuffer to that file.
  1624.  
  1625. eg.     review 10000        {starts normal reviewbuffer}
  1626.         review 50000        {starts big reviewbuffer}
  1627.         review 0            {deletes reviewbuffer}
  1628.  
  1629. NOTE 1: Because it uses a circular buffer with fixed size, this is much
  1630.   faster than having a fixed number of lines. The decrease in scrolling
  1631.   speed is neglible.
  1632. NOTE 2: The Write function of the dos.library will be patched, so
  1633.   there might be problems with other programms that patch this too.
  1634. ============================================================================
  1635. RUN [-C] commandline
  1636.  
  1637. * RUN executes a commandline in a separate process. If you want to
  1638.   execute several commands, you can separate them with \; .
  1639. * If you do not need a window, you can specify the "-C" option.
  1640.  
  1641. eg.     run dir ram:
  1642.         run -c assign libs: df0:libs
  1643. ============================================================================
  1644. SETCLOCK LOAD|SAVE
  1645.  
  1646. * SETCLOCK only works if you have a battery backed up clock (BBUC).
  1647.   It accesses the adresses $DC0000 and I do not know if it works
  1648.   with very old or very new (A1200) clocks.
  1649. * SETCLOCK LOAD sets the systemtime (you can see the systemtime with
  1650.   DATE or MEMCLK) to the time in the BBUC (hopefully this is the
  1651.   right time).
  1652. * SETCLOCK SAVE first resets the BBUC, then stores the systemtime
  1653.   to the BBUC.
  1654.   To set the BBUC to the right time, use DATE to set the correct
  1655.   date and time, then use SETCLOCK SAVE.
  1656.  
  1657. eg.     setclock load
  1658.         setclock save
  1659. ============================================================================
  1660. SKIP label
  1661.  
  1662. * SKIP searches for the label within the current script file. If it
  1663.   finds it, execution continues from that point onwards. Labels
  1664.   are specified using the LAB command.
  1665.  
  1666. eg.     lab myloop
  1667.         dir ram:
  1668.         ask "list ram again? "
  1669.         if warn
  1670.            skip myloop
  1671.         endif
  1672. ============================================================================
  1673. STACK [size]
  1674.  
  1675. * Allows you to view or alter the current stack size.
  1676.  
  1677. eg.     stack            {shows the current stack size}
  1678.         stack 30000      {sets current stack = 30000 bytes}
  1679. ============================================================================
  1680. UNALIAS [alias1] [alias2] [alias3] [alias4] ...
  1681.  
  1682. * UNALIAS removes one or more alias definitions from the alias list.
  1683. * UNALIAS without arguments removes all aliases.
  1684.  
  1685. eg.     alias f1 "cd df0:;dir^M"
  1686.         alias f2 "cd df1:;dir^M"
  1687.         ...
  1688.         alias f10 "ed df1:s/startup-sequence^M"
  1689.  
  1690.         unalias f1 f2 f3 f4 f5 f6 f7 f8 f9
  1691.         ...
  1692.         unalias f10
  1693. ============================================================================
  1694. WAIT timeout
  1695.  
  1696. * WAIT halts processing for the time given. Timeout is in seconds.
  1697.   You can abort this with CTRL-C.
  1698.  
  1699. eg.     echo "I'll wait a minute"
  1700.         wait 60
  1701. ============================================================================
  1702. Comments
  1703.  
  1704. ; blah blah blah blah
  1705. * etc etc etc
  1706. # hello ma
  1707.  
  1708. * Placing a semi-colon, an asterisk or a hash character as the 1st
  1709.   character in the line of a script file allows you to place comments
  1710.   in it.
  1711.  
  1712. eg.   ; This is a comment line
  1713.  
  1714. * If you want to place a comment at the end of a line, you have to
  1715.   put ;# before it.
  1716.  
  1717. eg.   info;#to see something interesting
  1718. ============================================================================
  1719. Builtin Commands for Advanced Users
  1720.  
  1721. These commands are thought for users with a deeper knowledge of the
  1722. system. Maybe they are also useful for those not knowing of the system
  1723. internals. Just try the examples to find that out.
  1724.  
  1725. Break task_description [signalmask|C|D|E|F]
  1726. Ctrl [max_16_chars | -C [ignore_name] | -R 8_colour_digits]
  1727. Die device
  1728. DiskChange device
  1729. GetMsg [portname]
  1730. Locate [-C] lock|filename
  1731. M [start_address] [end_address]
  1732. PutMsg port_description [number1|string1] [number2|string2] ...
  1733. Show D|I|L|M|P|R|S|T|V
  1734. Strings sourcefile [count]
  1735. TaskPri priority [task_description]
  1736. ============================================================================
  1737. BREAK task_description [signalmask|C|D|E|F]
  1738.  
  1739. * BREAK sets some signals at a given task
  1740. * task_description can be one of:
  1741.   - task/process name (case dependent !)
  1742.   - task/process adress
  1743.   - CLI-process number (one from 1 to 20)
  1744.   - zero (0) for this task
  1745.   It will be checked if the node-type field contains TASK or PROCESS
  1746. * signalmask is a longword; all bits, which should be signalled,
  1747.   must be 1 . Alternatively you can specify c,d,e or f to set
  1748.   the according signal to CTRL-C,-D,-E or -F. (CTRL-C is bit 12)
  1749. * BREAK without signalmask (and c,d,e,f) given sets all signals the
  1750.   task is waiting for.
  1751.  
  1752. eg.     break RexxMaster    {and it will be gone...}
  1753.         break Exchange c    {Exchange will get itself off too}
  1754.  
  1755. eg. If 2 ZShells are running. The one with the CLI-number 1 (get that
  1756.     out with prompt %n) lists a very large directory. You can break
  1757.     that by using the other ZShell typing:
  1758.         break 1 c
  1759.     Thats the same like you pressed CTRL-C on the ZShell number 1.
  1760. ============================================================================
  1761. CTRL [max_16_chars | -C [ignore_name] | -R 8_colour_digits]
  1762.  
  1763. This command is for changing the default settings.
  1764. * CTRL is for command-line-editing-keys-definitions (great word :).
  1765.   In other words: You can change the meaning of keys pressed with
  1766.   CTRL (Control) and some other keys (TAB ^I, Backspace ^H,
  1767.   Return ^M, Shift-Return ^J, ESC ^[).
  1768. * "CTRL" without arguments shows the current definitions.
  1769. eg.     ctrl
  1770.  
  1771. * "CTRL WQSEIX[RYHJMLAVn" (case dependent) sets the default settings.
  1772.   To change something, just change the character corresponding to
  1773.   the key pressed with CTRL. See some lines above for some CTRL-
  1774.   equivalents ( eg. TAB is same as CTRL-I ).
  1775.   You may get confused if you define one key twice.
  1776. eg.     ctrl QWKU         {half line deleting like OS2.0 shell}
  1777.         ctrl QWSEAXTIYMJH {...and you will have lots of fun}
  1778.  
  1779. * There is a special meaning with the 16th character. This is by
  1780.   default the point (.), which is displayed as a "n" (don't get
  1781.   confused). The point has a special meaning in some commands
  1782.   (ECHO,SEARCH,PUTMSG, dir back, force disk, abbreviation)
  1783.   and can be redefined using "CTRL WQSEIX[RYHJMLAVn", but replace the
  1784.   point by the character desired. The ASCII code must be between
  1785.   32 and 64.
  1786. eg.     ctrl WQSEIX[RYHJMLAV#  {# is now a special character}
  1787.  
  1788. * "CTRL -C" shows the ignored filenames for filenamecompletion.
  1789.   By default this is unset. (-C means here -Complete)
  1790. * "CTRL -C filedescription" defines which names are not completed.
  1791.   "filedescription" contains wild card(s) in most cases.
  1792. eg.     ctrl -c         {display ignore_name}
  1793.         ctrl -c *.info  {ignore *.info-files}
  1794.         ctrl -c *.info|*.bak {ignore files ending in .info and .bak}
  1795.         ctrl -c ~*.tex|*.dvi {complete only *.tex and *.dvi-files}
  1796.         ctrl -c ""      {unset ignore_name}
  1797.  
  1798. * "CTRL -R colours" defines the use of colours. "colours" has to be a
  1799.   8 digit number. The digit at position x defines to what colour number
  1800.   the default colour x is mapped to. Everything clear ? (I think no!)
  1801. eg.     ctrl -r 01234567   {sets the default colours}
  1802.         ctrl -r 01111111   {switches to one colour mode, very useful with
  1803.                             OS3.0+ to speed up scrolling}
  1804.         ctrl -r 01233321   {if you want to use only 4 colours}
  1805. ============================================================================
  1806. DIE device|taskdescription
  1807.  
  1808. * DIE lets the handler of a device (name ending in ":") end itself.
  1809.   It seems not to work with most handlers. Works with CrossDOS
  1810. * It can remove tasks too, but this will likely crash, because it is
  1811.   NOT SYSTEMCONFORM ! See BREAK for taskdescription.
  1812.  
  1813. eg.     die PC0:
  1814.         die Exchange
  1815. ============================================================================
  1816. DISKCHANGE device
  1817.  
  1818. * Needed for devices which do not detect a diskchange.
  1819.  
  1820. eg.     mount rad:;diskchange rad:
  1821.   Makes your rad:-disk appear on the Workbench.
  1822.         diskchange ram:
  1823.   If the ram-disk does not exist yet, the handler will be started
  1824.   (and the ram-disk can appear on Workbench when done before LOADWB)
  1825. ============================================================================
  1826. GETMSG [portname]
  1827.  
  1828. * GETMSG waits for a message arriving at the process-internal
  1829.   messageport (pr_MsgPort). The message will be shown, strings
  1830.   will be tried to detected (this could cause lots of enforcer hits).
  1831.   Then you will be asked if to reply the message. "y" replies it
  1832.   and should be used normally. "e" replies and gets back to waiting
  1833.   mode again. Abort waiting is possible with CTRL-C.
  1834. * "GETMSG portname" gives the process-internal port the given name.
  1835.   Then it behaves as described above.
  1836. * See PUTMSG for examples.
  1837. ============================================================================
  1838. LOCATE [-C] lock|filename
  1839.  
  1840. * "LOCATE lockadress" (lockadress is a BPTR) shows information about
  1841.   that lock structure. fl_Access must be -1 (write) or -2 (read).
  1842. * "LOCATE filename_or_dirname" gets an ACCESS_READ lock structure on
  1843.   that file/dir. (If you type -1 after the filename you should get
  1844.   an ACCESS_WRITE lock, but there seems to be an error in DOS !)
  1845. * "LOCATE -C lockadress" unlocks (removes) the lock structure.
  1846.  
  1847. eg.     locate &21f45c      {shows lock on adress $21f45c}
  1848.         locate $9f5b7       {shows lock with BPTR $9f5b7}
  1849.         locate -c $9f5b7    {removes this lock}
  1850.         locate ram:rdit     {tries to read-lock ram:rdit}
  1851.         locate ram:rdit -2  {same as above}
  1852.         locate c:mount -1   {got a write-lock on c:mount ?}
  1853. ============================================================================
  1854. M [start_address] [end_address]
  1855.  
  1856. * M is a memory contents dumping command.
  1857. * Typing M with a start and end address will display the hex and
  1858.   ASCII contents of those bytes in the memory locations specified.
  1859. * Typing M with only a start address will display 160 bytes
  1860.   starting at the location specified.
  1861. * Typing M with no parameters will display 160 bytes starting
  1862.   from the current memory location.
  1863. * The current memory location is always one location higher than
  1864.   the last location shown by a prior M command.
  1865.  
  1866. eg.   m $70000 $77fff
  1867.       m $fc0000
  1868.       m
  1869. ============================================================================
  1870. PUTMSG port_description [number1|string1] [number2|string2] ...
  1871.  
  1872. * PUTMSG is useful for testing programms which wait for a message,
  1873.   or to reactivate a task that waits for a message which will never
  1874.   arrive. PUTMSG sends a message to the given messageport.
  1875. * port_description can be given in 5 (!) ways:
  1876.   - Name of the messageport
  1877.   - Adress of the messageport
  1878.   - 3 ways of a task_description, see BREAK. This MUST be a Process
  1879.     because the process-internal messageport will be used.
  1880. * number|string is a longword number or a string. If it is a number,
  1881.   it will just be added to the message. If it is a string, a
  1882.   adress pointing to this string will be added to the message.
  1883.   If number1|string1 was a point (.), the message will be initialized
  1884.   as an DOS-Packet.
  1885. * After sending the message PUTMSG will wait for the reply and show
  1886.   that reply like GETMSG. Abort waiting with CTRL-C.
  1887. WARNING: Your machine might CRASH if you send a message to a
  1888.   (Process-internal) port that is not waiting for this message.
  1889. NOTE: PUTMSG without arguments makes a DisplayBeep (even without a
  1890.   window) and outputs the internal register value of A5.
  1891.  
  1892. eg.     putmsg testtask $21fd68 12
  1893.         putmsg testport "Hello World!"
  1894.  
  1895.   If you have 2 ZShells, execute in the one with CLI-number 1
  1896.   "getmsg". Activate the other shell and type
  1897.         putmsg 1 "like some chatting ?"
  1898.   The ZShell no. 1 should display that and prompt "reply ?". Answer
  1899.   "y" and the message goes back again.
  1900.   Now try "getmsg wurgutz" at one ZShell and "putmsg wurgutz $abcd"
  1901.   on the other. Do not forget to reply.
  1902.  
  1903. * You can use PUTMSG to use the AREXX interface of a programm. This
  1904.   works with some programms even with OS1.3- and no AREXX-Package.
  1905. eg.     putmsg showdvi 0 0 0 0 0 "tofront" {gets ShowDVI to front}
  1906.   Instead of the first 0 you sometimes must write the adress of
  1907.   this task. If available replace the second 0 with a pointer to
  1908.   the rexxsyslib.library. The third 0 is called rm_Action. I do not
  1909.   know what it is for. The fourth and fifth are results, only
  1910.   interesting in the reply.
  1911. eg.     putmsg showdvi 0 0 0 0 0 "loadnew tex.dvi"
  1912.  
  1913. * Specify a point as first number if you want to send a DOS-Packet.
  1914. eg.     putmsg DF0 . 0 1023 0 0 -1     {same as LOCK DF0: ON}
  1915.   If you get $FFFFFFFF as 4th longword, it was successful.
  1916.  (with OS1.3- you need to use FileSystem instead of DF0)
  1917. ============================================================================
  1918. SHOW D|I|L|M|P|R|S|T|V
  1919.  
  1920. * Shows some information about important exec-lists:
  1921.   - Devices
  1922.   - Interrupts
  1923.   - Libraries
  1924.   - Memory
  1925.   - Ports (MessagePorts)
  1926.   - Resources
  1927.   - Semaphores
  1928.   - Tasks (and Processes)
  1929.   - Vectors for reset-resident programs
  1930.   Use the first character of one of them as argument.
  1931. * The output means:
  1932.   - Adress: hexadecimal start adress of the structure
  1933.   - Pri   : Priority, often unused
  1934.   - Ver   : Number of version  (only with D,L,R)
  1935.   - Rev   : Number of revision (only with D,L,R)
  1936.   - Name  : Name
  1937.   - State : Task state (only with T)
  1938.   - SignWait : Signals, a waiting task waits for (only with T)
  1939.   - PT    : Pr means Process, Ta means Task, Tm means Task with
  1940.             Messageport like Process     (only with T)
  1941. * If displaying the tasklist, the CLI-number (-> CLI ?:) and the
  1942.   loaded command will be shown at processes with cli-structure.
  1943.   ">" stands for output-redirected, "<" for input-redirected.
  1944.   "Bg-CLI" means background CLI.
  1945. * SHOW V displays some important execbase pointers, which give a
  1946.   good indication of whether a virus is present in your system.
  1947.   WarmCapture, CoolCapture, ColdCapture, KickTagPtr, KickMemPtr,
  1948.   and KickCheckSum are displayed. If any of these are are NOT
  1949.   zero, then either a virus, RAD, or virus protector or some
  1950.   other program that takes control of your machine when you
  1951.   reset, is present.
  1952.  
  1953. eg.     show d          {have a look at the device-list}
  1954.         show Devices    {same as above}
  1955.         show t          {This is REAL MULTITASKING ! :) }
  1956. ============================================================================
  1957. STRINGS sourcefile [count]
  1958.  
  1959. * STRINGS displays all valid ASCII strings in a file which have a
  1960.   length greater than or equal to the count. If no count is given,
  1961.   a default of 10 characters is used.
  1962. * This command is very useful for finding out which libraries a
  1963.   program uses.
  1964.  
  1965. eg.     strings c:zshell 20
  1966.         strings c:mount
  1967. ============================================================================
  1968. TASKPRI priority [task_description]
  1969.  
  1970. * TASKPRI sets the priority of a task, it can be displayed using
  1971.   "SHOW T". The priority must be between -127 and 128 and should
  1972.   be within -50 and 20 to avoid system-hangups. Standard is 0 .
  1973. * task_description is same as described at BREAK.
  1974. * With one argument TASKPRI sets the priority of this task.
  1975. * If task_description is given, TASKPRI sets the priority of the
  1976.   given task.
  1977. NOTE: I did not like to call this command CHANGETASKPRI, because
  1978.       this name is really too long.
  1979.  
  1980. eg.     taskpri 2       {This task will be preferred}
  1981.         taskpri -1 3    {affects CLI no. 3}
  1982.         taskpri 4 Workbench
  1983. ============================================================================
  1984.  
  1985. ============================================================================
  1986. Changes
  1987.  
  1988. UP TO V1.3:See the source code of the ZShell V1.3 release
  1989.            (for example on FISH disk 537).
  1990.            Author: Paul Hayter
  1991.            Source: 103 KByte, Executable: 13 KByte, Doc: 32 KByte.
  1992.  
  1993. V2.0:There were so many changes, I think there is no sense in listing
  1994.      them all here, because it may be longer than this document. So just
  1995.      read this document or the source code.
  1996.      All changes since V1.3 made by Martin Gierich. Released 14.10.94.
  1997.      Source: 180 KByte, Executable: 25 KByte, Doc: 72 KByte.
  1998.  
  1999. V2.1:* IMPORTANT FOR THOSE WHO USED ZSHELL V2.0: Do not start ZShell V2.1 *
  2000.      * if ZShell V2.0 is resident. This will crash your machine !         *
  2001.      * Do not use ZSH V2.0 with ZShell V2.1 and vice versa.               *
  2002.   - Added a review buffer to see that again what scrolled out of the
  2003.     window. A scrollbar will probably added in future.
  2004.   - Changed default CTRL-keys; added 2 new CTRL-keys (see HISTORY).
  2005.   - Changed usage of MORE (you can still use the cursor keys).
  2006.   - DIR now hides all these files that Filenamecompletion ignores.
  2007.   - Some bugs found with mungwall and scratch are fixed.
  2008.   All changes since V1.3 made by Martin Gierich. Released 11.12.94.
  2009.  
  2010. V2.2: I did some bugfixes and minor improvements (I have no time for more).
  2011.   - Fixed a REALLY NASTY BUG that trashed taskswitching when closing ZShell.
  2012.   - AmigaGuide-Documentation added !
  2013.   - RUN-Command added !
  2014.   - NEWCLI has a new argument template.
  2015.   - CTRL-J = Shift-RETURN puts the command line in History
  2016.     buffer without executing.
  2017.   - PROMPT now knows the args %s and %c :-) . Default Prompt
  2018.     changed to "%s> ".
  2019.   - Better building of the CLI-Interface when starting from WB.
  2020.   - Now the Pseudo-Assign PROGDIR: is provided (OS2.0+ only).
  2021.   - LIST -Q -R also works; DIR can also list recursive.
  2022.   - ECHO Hi There ! will now do the same as ECHO "Hi There !" .
  2023.   - Improved options when starting from CLI.
  2024.   All changes since V1.3 made by Martin Gierich. Released 3.1.95.
  2025.  
  2026. V2.3: This time there are some real new features. Because now I have my
  2027.     OS3.1 Autodocs and Includes, I have added several features that can
  2028.     only be used with OS2.0+. There will be done version-checkings before
  2029.     using OS2.0+ specific stuff, so no need to be afraid of crashes.
  2030.   - New Commands: MAKEICONMAKELINKFLAGS and MOVE.
  2031.   - DELETECOPYMOVEPROTECT and JOIN are fully rewritten !
  2032.     They now all use the directory-lister (for LIST and DIR)
  2033.     and therefore all support wildcards and recursive processing !
  2034.   - PATH-Command is now AmigaDOS compatible.
  2035.     Paths from Workbench are duplicated on starting from Workbench.
  2036.   - Support of Hardlinks and Softlinks by MAKELINKLIST and DIR.
  2037.   - ASSIGN supports ADD, REMOVE, PATH and DEFER.
  2038.   - Redirection improved: Can also be redirected to MORE.
  2039.   - Can be iconified to an ApplicationIcon (see FLAGS).
  2040.   - Erroroutput is done by DOS.
  2041.   - DELETE DEVICE formats a disk quick,
  2042.   - DELETE FORCE ignores delete-protection-bits.
  2043.   - Filenamecompletion can show all matching files.
  2044.   - MORE supports "more keys" and checks windowsize.
  2045.   - ALIAS can work without surrounding quotes; now you
  2046.     have to remove \ before " ,sorry for any incompatibilities.
  2047.   - CHECK is moved to FLAGS, VEC is moved to SHOW V.
  2048.   - RESET removed: It was a hack ! RECOPY removed: Has anybody needed it ?
  2049.   - First line in Command History is the last changed line.
  2050.   - You can use ^* instead of ^$9b with ECHO and PROMPT.
  2051.   - Really faaaast searching in MORESEARCH and HELP.
  2052.   - Bugfix and new options when starting from CLI.
  2053.   - New Tooltypes for starting from Workbench.
  2054.   - HELP only searches the current dir and S: for the manual.
  2055.   All changes since V1.3 made by Martin Gierich. Released 10.02.95.
  2056.  
  2057.   Now there is not much of the original V1.3 release left, because most
  2058.   of the old parts are totally rewritten and size has more than doubled !
  2059.  
  2060. V2.4: Minor update, important bugfixes
  2061.   - Application-Window allows dropping Workbench-Icons into ZShell-Window; OS2.0+
  2062.   - Check-Flag checks writes to low memory
  2063.   - SHOW task shows redirection/background
  2064.   - DIE task removes task
  2065.   - COPY uses dots as progress indicator
  2066.   - If an error during starting occurs, there will be an errormessage
  2067.   - Sets Wildstar-Flag in System, so you can use "*" instead of "#?"
  2068.     with all commands; OS2.0+
  2069.   - Hide-Flag added.
  2070.   - Lots of bugfixes
  2071.   All changes since V1.3 made by Martin Gierich. Released 28.02.95.
  2072.  
  2073. V2.5:  Again minor update, but updated documentation
  2074.   - Localized most messages using the catalog of AmigaDOS, so no
  2075.     translating required (and I do not have to look for translators :-) ; OS2.1+
  2076.   - Pressing CTRL-F a filerequester pops up; OS2.0+
  2077.   - Possible to open own Public Screen on starting; OS2.0+
  2078.   - EXECUTE uses AmigaDOS Shell for executing scripts
  2079.     and therefore no longer causes compatibility problems. To execute
  2080.     ZShell-scripts: set S-protection flag and use it like a command.
  2081.   - Correct inserting of strings when pressing function-keys or dropping
  2082.     an Icon on Window/AppIcon
  2083.   - Removed C: as default path. This was a stupid idea
  2084.     I got from the AmigaDOS Shell. It is better to have C: as first path.
  2085.   - You can use textfiles/Amigaguides with E-flag set like a command.
  2086.     It will then be displayed using amigaguide.library. With OS3.0+
  2087.     this even works on everything supported by your datatypes (like pics)
  2088.   - Problems with foreign characters hopefully fixed
  2089.   - NEWCLI and RUN now copy stacksize, appiconname and windowname
  2090.   - Bugfixes: ASSIGN, DIR/LIST, DELETE DEVICE
  2091.   - ToolType ICONIFY fixed. It has NEVER worked !
  2092.   - Starting ZShell chapter improved
  2093.   - Probably added some brand new nasty bugs and left some ugly old bugs :)
  2094.   - And what is best: The versionnumber is changed !  ;-) 
  2095.   All changes since V1.3 made by Martin Gierich. Released 11.04.95.
  2096.   Source: 217 KByte, Executable: 31 KByte, Guide: 100 KByte.
  2097. ============================================================================
  2098. Tips and Hints
  2099.  
  2100. * Use MORE instead of TYPE.
  2101. * Useful aliases:
  2102.         alias arexx %1 %2 putmsg $1 0 0 0 0 0 "$2"
  2103.   So 'arexx showdvi "tofront"' is the same as the example in PUTMSG.
  2104.   If you want some shortcuts like MessyDOS:
  2105.         alias md makedir
  2106.         alias ren rename
  2107.         alias del delete
  2108.         alias dc diskchange
  2109.   These are only needed for OS1.3-:
  2110.         alias setenv %1 %2 echo >ENV:$1 $2
  2111.         alias getenv %1 type ENV:$1
  2112.         alias unsetenv %1 delete ENV:$1
  2113.  
  2114. * A script counting down from 10 to 0 (a bit complicated and slow) :
  2115.     failat 11 ; setenv helpenv 11
  2116.     lab backtohere
  2117.     copy >NIL: ENV:helpenv ENV:counter
  2118.     eval >ENV:helpenv |ENV:counter 1 -
  2119.     echo "Current number: " ; eval |ENV:helpenv
  2120.     if not error
  2121.        skip backtohere
  2122.     endif
  2123.  
  2124. * From Workbench assigns are most likely done by clicking an icon:
  2125.   For example if you have the assigns below in the script
  2126.         failat 10
  2127.         assign TEX: dh0:text/pastex
  2128.         assign MF: dh0:text/pastex/metafont
  2129.         putmsg
  2130.   you need to get a PROJECT ICON for that. Now define the default
  2131.   tool as ZSH (or ZShell) and a tooltype containing
  2132.         WINDOW=
  2133.   (case sensitive). That's all. Failat 10 breaks the script if
  2134.   an error occurs. Putmsg flashes the screen to indicate that
  2135.   everything was successful. No window will be opened.
  2136. ============================================================================
  2137. Possibilities for Future Improvements
  2138.  
  2139. Does somebody want to help me to make this chaotic documentation
  2140. more readable ?
  2141.  
  2142. Planned for next version:
  2143. * Real UNICS-like Pipes using background-tasks
  2144.  
  2145. Other ideas/suggestions:
  2146. * Full XPK-support
  2147. * Scrollbar for review-buffer (this will be difficult)
  2148. * Add more commands to the directory-lister (like makeicon,search)
  2149. * Make DIE a real killer (windows, screens)
  2150. * COPY asks to remove incomplete destination files.
  2151. * MAKEDIR can create nested dirs: If RAM: is empty "makedir ram:a/b/c"
  2152.   would create directory c in b in a in RAM: .
  2153. * RENAME command with wildcard support: "rename *.asm *.s" would rename
  2154.   all files ending in .asm to the same name ending in .s !
  2155. * SPLIT command as opposite to JOIN.
  2156. * Easier configuring
  2157. * Make it a commodity with hotkey.
  2158. * Improve script file execution, like passing arguments,
  2159.   allow subroutine scripts and commands like FOR.
  2160. * More flexible environment variable handling.
  2161. * More options for the LIST command.
  2162. * Include MOUNT/INSTALL command.
  2163. * HEX option for MORE.
  2164. * Faster scrolling (jump scroll/1 bitplane scroll)
  2165. * Patch for 68000-Processors to be as fast as 68060/50MHz-Processors ;-)
  2166. * Write a stripped-down version for MessyDOS; after starting this would say:
  2167.   This is ZShell V2.x *** Fatal error: no multitasking system !  ;-)
  2168.  
  2169. If you want to see these or other improvements made, please write to me.
  2170. If you do not, please write to me, too :-)
  2171.  
  2172. Note that there is a 32K limit of the executable, because I only use
  2173. relative addressing (like in small code model).
  2174.  
  2175.  
  2176. I thought about making a separate version for OS2.0+:
  2177.  
  2178. Command-line-editing and review stuff could be done best (most powerful)
  2179. within a console-handler; there are already several available (as I know,
  2180. the only one that is Freeware is KingCon), so I do not want to write 
  2181. another one. The disadvantages of these I have seen is that you need to
  2182. change alot between mouse and keyboard and they are somehow slow on my
  2183. system (and do not work on OS1.3- systems) and memory-hungry.
  2184.  
  2185. Except for Command-line-editing and review, the inbuild commands are a
  2186. main advantage of ZShell. These commands could be moved to one executable
  2187. file; if this file was executed, it would create all inbuild commands
  2188. as resident commands that could be used by the normal Shell.
  2189. (This would be somehow like the MessyDOS COMMAND.COM file.)
  2190. So if you used this file and a separate console-handler, you could work
  2191. comfortably with the normal Shell.
  2192.  
  2193. If there are enough people asking for that, I will think about writing
  2194. such a "multi-command-file", but I will not write another console-handler.
  2195.  
  2196. And I have a really great idea what else to write: A video-backup-system
  2197. for storing all your files of your hard/floppy disks on an ordinary cheap
  2198. video-tape with a small, self-built hardware-interface. Yes, I know, that
  2199. already exits, but I have never heard about one that multitasks without
  2200. problems while backing up :-) . My first attempts to create this have
  2201. failed and are now one year ago :-(
  2202.  
  2203. And, last but not least, I have to invest lots of time in my studies and
  2204. I do not want to hang around all remaining time at the keyboard !
  2205.  
  2206. As long as Commodore is not sold and the future of the Amiga is not sure
  2207. I do not feel like starting any new project for it :-( .
  2208. ============================================================================
  2209. Distribution
  2210.  
  2211. Following files belong to this document:
  2212.  1) ZShell           The main executable
  2213.  2) ZSH              The small starter
  2214.  3) ZShell.doc       The documentation (and online help manual)
  2215.  4) ZShell.guide     The AmigaGuide documentation
  2216.  5) ReadMe           Short description
  2217.  6) ZStart           An example startup script (can be put in S: )
  2218.  7) ZShell.s         Source code of the main executable
  2219.  8) ZSH.s            Source code of the small starter
  2220.  9) Csh-Aliases      Some aliases to make it a bit similar to UNICS csh
  2221.  and some icons.
  2222. ============================================================================
  2223. Copyright
  2224.  
  2225. Summary: ZShell is Freeware !
  2226.  
  2227. COPYRIGHT FOR THE V1.3 PART (by Paul Hayter)
  2228.  
  2229. ZSHELL IS FREELY DISTRIBUTABLE. YOU CAN DISTRIBUTE THIS AS LONG AS
  2230. THIS DOC FILE REMAINS WITH THE EXECUTABLE, AND THAT NO CHARGE IS MADE FOR
  2231. THEM (APART FROM A NOMINAL COPYING CHARGE). IF YOU FEEL LIKE SENDING
  2232. ME SOMETHING FOR THIS PROGRAM, SEND ME A POSTCARD!, A P.D. DISK, A
  2233. PROGRAM YOU'VE BEEN WORKING ON ,BUT DON'T SEND ME ANY MONEY (WELL, IF
  2234. YOU REALLY, REALLY WANT TO, I GUESS I COULD PUT UP WITH IT).
  2235.  
  2236. COPYRIGHT FOR THE V2.x PART (by Martin Gierich)
  2237.  
  2238. This may be confusing, that there are two copyrights, but I did
  2239. not like to change the original copyright notice. The parts belonging
  2240. to V2.x are marked in the source code with 'V2.x'.
  2241. ZSHELL IS FREELY DISTRIBUTABLE. YOU CAN DISTRIBUTE THIS AS LONG AS
  2242. THE TWO EXECUTABLES REMAIN WITH THIS DOCUMENTATION TOGETHER (AND PLEASE
  2243. DISTRIBUTE THE SOURCE FILES WITH THEM TOO), AND THAT NO CHARGE IS MADE
  2244. FOR THEM (APART FROM A NOMINAL COPYING CHARGE).
  2245. IT IS NOT ALLOWED TO USE ZSHELL COMMERCIALLY !
  2246. I would like to get your comment on ZShell to see if anybody is using it
  2247. and what can be improved.
  2248. ============================================================================
  2249. Disclaimer
  2250.  
  2251. DISCLAIMER
  2252.  
  2253. USE THE FILES OF THIS PACKAGE ON YOUR OWN RISK !
  2254. The authors are in no way responsible for what you are doing with it
  2255. or what it does to you or your soft- and hardware.
  2256.  
  2257. Amiga, AmigaDOS, AmigaGuide, Workbench and Kickstart are (or better: were ? :)
  2258. registered trademarks of Commodore-Amiga Inc. (Commodore, who is this ? :)
  2259. MessyDOS and UNICS are not really trademarks (as I know)  :-)
  2260. ============================================================================
  2261. Credits
  2262.  
  2263. CREDITS FROM PAUL
  2264.  
  2265. Many thanks to Wayne for his invaluable help in doing the history
  2266. and command line editing parts of ZShell. Also, thanks to
  2267. Tim Strachan who asked for the history stuff.
  2268. ZShell was entirely written using Wayned by Wayne Hayter (various
  2269. versions). And was assembled with A68K V2.61 by Charlie Gibbs. And
  2270. linked with Blink V6.7 by the Software Distillery.
  2271.  
  2272. CREDITS FROM MARTIN
  2273.  
  2274. Many thanks for mail go to:
  2275. (V2.0)
  2276. * Laura Mahoney, especially for trying to send me a postcard, lots
  2277.   of mail and some betatesting
  2278. * Igor Srdanovic
  2279. * Willem MC Hogeweg
  2280. (V2.1)
  2281. * Nico Max
  2282. * Max Stouugard, especially for his great description of a crash :-)
  2283. * Alexandros Loghis, especially for some good ideas
  2284. (V2.2)
  2285. * Christian Steigies, especially for sending me a postcard, for really
  2286.   long mails and betatesting
  2287. * Oliver Hofmann, especially for some betatesting under EGS
  2288. * Holger Jakob, especially for betatesting under KingCON
  2289. * Hans Kruse
  2290. (V2.3)
  2291. * Nobody !
  2292. (V2.4)
  2293. * Aristotelis Grammatikakis
  2294. * Jonathan Marsh
  2295. * Dominique Niethammer
  2296. * Teonanacatl
  2297. * Fredrik Solenberg
  2298. * Ccobb (sorry, I do not have your real name here)
  2299.  
  2300. Thanks to the administrators of Aminet and Funet for their great work.
  2301.  
  2302. Thanks to Frank for using ZShell :-)
  2303. ============================================================================
  2304. Authors
  2305.  
  2306. Please send any correspondence and/or bug reports referring V1.3
  2307. to me at the address below:-
  2308.  
  2309.       Paul Hayter
  2310.       PO Box 331
  2311.       Ballina
  2312.       2478
  2313.       AUSTRALIA
  2314.  
  2315. Please send correspondence, bug reports, comments, suggestions
  2316. for future improvements etc. referring V2.x to this adress:
  2317.  
  2318.       Martin Gierich
  2319.       Narzissenweg 7
  2320.       76297 Stutensee
  2321.       GERMANY
  2322.  
  2323.   (I would really like to get a picture postcard from you, even if
  2324.   you just wrote a "Hello" on it !)
  2325.  
  2326.   If you have EMAIL access, it would be nice if you send me one
  2327.   at one of these adresses:
  2328.  
  2329.            uj3w@rz.uni-karlsruhe.de           (Internet)
  2330.    or to   uj3w@ibm3090.rz.uni-karlsruhe.de   (Internet)
  2331.    or to   UJ3W@DKAUNI2.BITNET                (Bitnet)
  2332.  
  2333.   I will try to reply EVERY EMail I get !
  2334.  
  2335.   Please tell me your system-configuration, at least your Kickstart-
  2336.   Version, so that I see which kind of systems should be most supported
  2337.   in future versions. My system is an A500 with 200 MB Harddisk, 3 MB RAM,
  2338.   Kickstart 2.04 and Workbench 2.1 and a VGA-Monitor with Fickerfixer.
  2339.   Note that large parts of ZShell were developped under Kickstart 1.3 !
  2340.   (Ah yes, and I have such a Vortex ATONCE AT-Emulator; the fastest thing
  2341.   it can do is to hang itself up, and they do not make any updates !)
  2342.  
  2343.       /\/\            o o
  2344.      / __ \ artin      <
  2345.     (_/  \_)         `---'
  2346. ============================================================================
  2347.